Seite 1 von 1
5.4Beta und CGI Bild einbetten ?
Verfasst: 01.09.2015 12:35
von Bisonte
So dank Kiffi's Entdeckung bekomme ich es nun endlich hin, CGI auch zum laufen zu kriegen
Allerdings stellt sich mir nun die Frage, wie ich ein selbst erstelltes Image nun einbetten kann.
Diverse Test (u.a. die enthaltenen Beispiele) liefen nur darauf hinaus, dass der Browser entweder nur den
binaeren Inhalt als Text anzeigt, als Download anbietet oder aber das Bild ist komplett alleine auf der Seite (abgedunkelter Rest).
Muss ich das erstellte Bild etwa immer erst speichern, und dann per "<img src...." wieder einlesen oder geht das nicht auch direkt ?
Edit :
Gerade selbst drauf gekommen : "<img src="PBCGI.exe>" zum einbinden in die html datei schreiben... (mit Parameter für einen Counter z.B.)
Re: 5.4Beta und CGI Bild einbetten ?
Verfasst: 01.09.2015 13:08
von Kiffi
Bisonte hat geschrieben:Gerade selbst drauf gekommen
hier dennoch ein alternativer Ansatz: Bild in der CGI generieren, als Base64 codieren und dann als img src="data:image/png;base64,... zurückgeben:
Code: Alles auswählen
EnableExplicit
Procedure.s GetB64FromImage()
Protected k
Protected *Buffer
Protected *OutputBuffer
Protected Base64StringLength
Protected Base64String.s
If CreateImage(0, 255, 255)
StartDrawing(ImageOutput(0))
For k=0 To 255
FrontColor(RGB(k,0, k)) ; a rainbow, from black to pink
Line(0, k, 255, 1)
Next
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor(RGB(255,255,255)) ; print the text to white !
DrawText(40, 50, "An image easily created !")
StopDrawing() ; This is absolutely needed when the drawing operations are finished !!! Never forget it !
*Buffer = EncodeImage(0)
*OutputBuffer = AllocateMemory(MemorySize(*Buffer) * 2)
Base64StringLength = Base64Encoder(*Buffer, MemorySize(*Buffer), *OutputBuffer, MemorySize(*Buffer) * 2)
Base64String = PeekS(*OutputBuffer, Base64StringLength, #PB_Ascii)
FreeMemory(*OutputBuffer)
FreeMemory(*Buffer)
EndIf
ProcedureReturn Base64String
EndProcedure
If Not InitCGI() Or Not ReadCGI()
End
EndIf
WriteCGIHeader(#PB_CGI_HeaderContentType, "text/html", #PB_CGI_LastHeader)
WriteCGIString(#CRLF$)
WriteCGIString("<html><title>PureBasic - test</title><body>" +
"Hello from PureBasic CGI<br>" +
"<img src='data:image/png;base64," + GetB64FromImage() + "' alt='Testbild' />" +
"</body></html>")
Grüße ... Peter
Re: 5.4Beta und CGI Bild einbetten ?
Verfasst: 01.09.2015 13:25
von Bisonte
Den Wald vor lauter Bäumen.... und so

Re: 5.4Beta und CGI Bild einbetten ?
Verfasst: 01.09.2015 13:39
von Kiffi
Deine Lösung ("<img src="PBCGI.exe>") ist aber auch nicht übel. Hat ein wenig gedauert, bis ich das geschnallt habe.
Grüße ... Peter
Re: 5.4Beta und CGI Bild einbetten ?
Verfasst: 01.09.2015 18:17
von Bisonte
hehe... Deine Lösung wird genutzt, wenn die komplette Seite per CGI erstellt wird... meine Lösung, wenn man das ganze in eine HTML oder PHP einbetten möchte
