möchte ein base64 codiertes Bild in die SQLITE schreiben und lesen mit Base64EncoderBuffer/Base64DecoderBuffer als BLOB, geht aber nicht!
Kann jemand sagen warum!
Code: Alles auswählen
Global DDBASE.s = "D:\Dokumente\Temp\Base64Test.db"
Global FL=2
Global Bildspalte = 1
Global *ImageMemory
Global ImageMemSize
Global *Base64Memory
Global Base64MemSize
Global Base64_String$
Global Base64_Re_String$
Enumeration
#DB
#DB_Img
EndEnumeration
UsePNGImageDecoder()
UseJPEGImageDecoder()
UseTIFFImageDecoder()
UseSQLiteDatabase()
Pattern$ = "Image Files (*.bmp, *.jpg, *.png, *.tif)|*.bmp;*.jpg;*.png;*.tif"
imagefile$ = OpenFileRequester("Choose an image file", "", pattern$, 0)
If ReadFile(FL, imagefile$)
*ImageMemory = AllocateMemory(Lof(FL))
ReadData(FL, *ImageMemory, Lof(FL))
; ---------------
Base64MemSize = Base64EncoderBuffer(*ImageMemory, MemorySize(*ImageMemory), *Base64Memory,MemorySize(*ImageMemory))
; ---------------
CloseFile(FL)
EndIf
;{
If FileSize(DDBASE) <> -1
DeleteFile(DDBASE)
EndIf
;}
;{
If FileSize(DDBASE)=-1
If CreateFile(FL, DDBASE)
CloseFile(FL)
EndIf
EndIf
;}
;{ Now open it and save the values, close it up
OpenDatabase(#DB, DDBASE,#Null$,#Null$)
DatabaseUpdate(#DB, "CREATE TABLE Velindos (Pfad TEXT, myBild BLOB)")
; SetDatabaseBlob(#DB, 0, *ImageMemory, MemorySize(*ImageMemory))
SetDatabaseBlob(#DB, 0, *Base64Memory, Base64MemSize)
DatabaseUpdate(#DB, "INSERT INTO Velindos (Pfad, myBild) VALUES ('" + imagefile$ + "',?)")
CloseDatabase(#DB)
FreeMemory(*Base64Memory)
;}
;{ Now open up the database and read the image and Pfad from it
If OpenDatabase(#DB, DDBASE,#Null$,#Null$)
DatabaseQuery(#DB, "SELECT * FROM Velindos")
FirstDatabaseRow(#DB)
imagefile$ = GetDatabaseString(#DB,0)
Base64MemSize = DatabaseColumnSize(#DB, 1)
*Base64Memory = AllocateMemory(Base64MemSize)
GetDatabaseBlob(#DB, 1, *Base64Memory, Base64MemSize)
CloseDatabase(#DB)
EndIf
;}
;{
ImageMemSize = Base64DecoderBuffer(*Base64Memory, Base64MemSize,*ImageMemory,Base64MemSize)
CatchImage(#DB_Img, *ImageMemory, @ImageMemSize)
;}
OpenWindow(0,0,0,ImageWidth(#DB_Img),ImageHeight(#DB_Img),imagefile$,#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ImageGadget(0,0,0,0,0,ImageID(#DB_Img))
Repeat:Until WaitWindowEvent() = #PB_Event_CloseWindow