Hallo,
habe die Sache bis Dato wie folgt gelöst! Über das ImageGadget hole ich mir ein Bild;
Code: Alles auswählen
Case #I_Bild
If EventDropImage(#myDropImage)
ResizeImage (#myDropImage,210,215)
SetGadgetState(#I_Bild, ImageID(#myDropImage))
If CreateImage(SpeicherBild, ImageWidth(#myDropImage), ImageHeight(#myDropImage))
If StartDrawing(ImageOutput(SpeicherBild))
DrawImage(ImageID(#myDropImage),0,0)
StopDrawing()
SaveImage(SpeicherBild, #SavePath+"redrawn clipboard Image.bmp")
speicher es in der Festplatte. Anschliessend hole ich mir das gespeicherte Bild wie folgt mit folgender Procedure wieder für das speichern in der Datenbank:
Code: Alles auswählen
Procedure DatensatzHinzu()
DB=1
Bildspalte=4
If CreateFile(0, DatabaseFile$)
CloseFile(0)
EndIf
OpenDatabase(DB, DatabaseFile$, "", "", #PB_Database_SQLite)
DatabaseUpdate(DB, "Create Table Velindos (ID INTEGER,Stichwort TEXT,Notiz TEXT,Pfad TEXT, myBild BLOB)")
ID$=GetGadgetText(#S_Data)
STICHWORT$=GetGadgetText(#S_Stichwort)
NOTIZ$=GetGadgetText(#S_Notiz)
PFAD$=GetGadgetText(#S_Pfad)
ReadFile(0, #SavePath+"redrawn clipboard Image.bmp")
Buffersize = Lof(0)
Buffer = AllocateMemory(Buffersize)
ReadData(0, Buffer, Buffersize)
CloseFile(0)
SetDatabaseBlob(DB, 0, Buffer, Buffersize)
DatabaseUpdate(DB, "Insert Into Velindos (ID, Stichwort, Notiz,Pfad,myBild) Values ('"+ID$+"','"+STICHWORT$+"','"+NOTIZ$+"','"+PFAD$+"',?);")
DatabaseQuery(DB, "Select * From Velindos")
NextDatabaseRow(DB)
ID$= GetDatabaseString(DB,0)
SetGadgetText(#S_Data,ID$)
STICHWORT$= GetDatabaseString(DB,1)
SetGadgetText(#S_Stichwort,STICHWORT$)
NOTIZ$= GetDatabaseString(DB,2)
SetGadgetText(#S_Notiz,NOTIZ$)
PFAD$= GetDatabaseString(DB,3)
SetGadgetText(#S_Pfad,PFAD$)
; hier auslesen:
If DatabaseColumnType(DB, Bildspalte) = #PB_Database_Blob
picsize = DatabaseColumnSize(DB,Bildspalte)
If picsize
*blobreadpuffer = AllocateMemory(picsize)
If *blobreadpuffer
If GetDatabaseBlob(DB, Bildspalte, *blobreadpuffer, picsize)
myImage = CatchImage(0, *blobreadpuffer)
;ImageGadget(#I_Bild, 240, 175, 210, 215, myImage, #PB_Image_Border)
SetGadgetState(#I_Bild,myImage)
Else
Debug "GetDatabaseBlob ist fehlgeschlagen"
EndIf
FreeMemory(*blobreadpuffer)
Else
Debug "Nicht genügend Speicher vorhanden"
EndIf
Else
Debug "picsize is null"
EndIf
Elsenif
Debug "DatabaseColumnType(0, 1) ist kein Blob"
EndIf
CloseDatabase (DB)
EndProcedure
Resume: Es ist mir nicht gelungen das Bild elegant an die Datenbank zu übergeben. Hat richtig Schweiss gekostet diese Lösung und habe anscheinend einige Leute verkrault, bin aber Anfänger mit Purebasic und muss mich auch erst hineinleben.
Gruss ... Velindos
PS: Bin für jeden Verbesserungsvorschlag zu haben!
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)