Bild in Speicher laden
Verfasst: 11.08.2015 12:17
Ich möchte mit dem an der Stelle 'Adresse' gespeicherte Bild
zwei Dinge tun:
1. Es mit setDatabaseBlob() zum Speichern in einer DB vorbereiten
2. Eine auf die Maße W(Breite) und H(Höhe) reduzierte Kopie in einem
ImageGadget mit der Nummer ImGadNr anzuzeigen.
Ich habe Sorge, mir bei einem Fehler durch einen Test den Speicher zu ruinieren. Daher:
a) Ist das Fragment so richtig?
b) Muss(!) man bei EncodeImage() auch noch das Bildformat bei den Parametern angeben, oder
reicht es, den passenden Decoder bzw. alle Decoder zu laden?
zwei Dinge tun:
1. Es mit setDatabaseBlob() zum Speichern in einer DB vorbereiten
2. Eine auf die Maße W(Breite) und H(Höhe) reduzierte Kopie in einem
ImageGadget mit der Nummer ImGadNr anzuzeigen.
Code: Alles auswählen
#Orig=0
#Resized=1
;---- zu 1. ---------------------
LoadImage(#Orig,Adresse)
ReadFile(0,Adresse)
size_orig = Lof(0)
If size_orig
*mem_orig = AllocateMemory(size_orig)
If *mem
ReadData(0, *mem_orig, size)
SetDatabaseBlob(DBNr,0,*mem_orig,size_orig)
EndIf
EndIf
CloseFile(#Orig)
;---- zu 2.----------------
CopyImage(#Orig,#Resized)
ResizeImage(#Resized,W,H)
*mem_res=EncodeImage(#Resized)
size_res=MemorySize(*mem_res)
CatchImage(#Resized,*mem_res,size_res)
SetGadgetState(ImGadNr,ImageID(#Resized))
;(Speicherfreigaben jeweils weggelassen)
a) Ist das Fragment so richtig?
b) Muss(!) man bei EncodeImage() auch noch das Bildformat bei den Parametern angeben, oder
reicht es, den passenden Decoder bzw. alle Decoder zu laden?