Da du ja kein kompletten Code gepostet hast, weiß ich nicht ob vielleicht schon an einer anderen Stelle was falsch war, die Codierung des Bilds oder Ähnliches. Zum Beispiel erzeugt "BildStr.s = EncodeImage(Bild)" aus deiner Eingangsfrage
kein String, sondern ein Buffer. (Außer das ist in Spiderbasic anders, weiß ich gerade nicht).
Auf jeden Fall hier mal ein Kompletter Code mit Codierung und Decodierung:
Code: Alles auswählen
Enumeration
#Window
#Gadget1
#Gadget2
EndEnumeration
; Encoder und Decoder inizialisieren
UsePNGImageDecoder()
UsePNGImageEncoder()
; Irgendein Bild erstellen
Define OriginalImage = CreateImage(#PB_Any, 200, 200)
If StartDrawing(ImageOutput(OriginalImage))
Box(0, 0, 100, 100, $FF0000)
Box(100, 0, 100, 100, $00FF00)
Box(0, 100, 100, 100, $0000FF)
Box(100, 100, 100, 100, $00FFFF)
StopDrawing()
EndIf
; Bild als PNG und Base64 codieren
Define *Buffer, Base64String.s
*Buffer = EncodeImage(OriginalImage, #PB_ImagePlugin_PNG)
Base64String.s = Base64Encoder(*Buffer, MemorySize(*Buffer))
FreeMemory(*Buffer)
Debug Base64String ; Base64 code angucken
; Base64 decodieren und als Bild laden
Define Length.i, DecodedImage.i
*Buffer = AllocateMemory(Len(Base64String)+64) ; Laut Hilfe muss der Buffer mindestens 64 Byte haben, daher lieber +64
Length = Base64Decoder(Base64String, *Buffer, MemorySize(*Buffer))
DecodedImage = CatchImage(#PB_Any, *Buffer, Length)
FreeMemory(*Buffer)
; Bilder Vergleichen
OpenWindow(#Window, 0, 0, 400, 200, "Base 64 image encoding and decoding", #PB_Window_MaximizeGadget|#PB_Window_ScreenCentered)
ImageGadget(#Gadget1, 0, 0, 200, 200, ImageID(OriginalImage))
ImageGadget(#Gadget2, 200, 0, 200, 200, ImageID(DecodedImage))
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
End