ich hab ein Problem mit CatchImage().
Mein Programm holt Bilder aus unserer Fotoclub Datenbank mit GetDatabaseBlob() und dann wird das Bild mit CatchImage() geladen, verkleinert und vorerst als thumb angezeigt.
Wir haben jpg und tiff und png Bilder in der DB.
Geht alles solange das image in der DB ok ist. Jetzt ists aber passiert, dass wer kaputte Bilder von einer billigen Speicherkarte in die DB geladen hat. Sollte beim runterladen eigentlich nix machen, weil wenn Catchimage() ein kaputtes Bild bekommt, dann gibts ja #false als return.
Das geht aber nicht immer!!
ok ist es nur bei UseJPGImageDecoder() ODER nur UseTIFFImageDecoder()
aber wenn man beide verwendet, dann crasht das CatchImage().
Witzig ist auch, dass UseTIFFImageDecoder() vor UseJPEGImageDecoder() stehen muss, damit es crasht. Umgekehrt gehts.
Alle anderen Decoder sind egal, wo sie stehen.
Irgendwas ist da faul oder mach ich was falsch, es sollte doch egal sein, welcher Decoder an erster Stelle im Programmcode steht?
Wär super wenn jemand das Codeschnippsel ausprobieren könnte
Code: Alles auswählen
; Tested with PB4.51, 4.6Beta, WinXP-SP3, Win7 32 Bit
;-----------------------------------------------------------------
; not ok
UseTIFFImageDecoder()
UseJPEGImageDecoder()
;-----------------------------------------------------------------
;; ok
;UseJPEGImageDecoder()
;UseTIFFImageDecoder()
;-----------------------------------------------------------------
;; ok
;UseTIFFImageDecoder()
;-----------------------------------------------------------------
;; ok
;UseTIFFImageDecoder()
;UseJPEG2000ImageDecoder()
len = 1000000
*buffer = AllocateMemory(len)
If *buffer
; an dieser Stelle wird *buffer mit GetDatabaseBlob() gefüllt.
; wir simulieren einen fehlerhaften Eintrag
PokeS(*buffer, "badpicture", 10)
If CatchImage(1, *buffer, len)
FreeImage(1)
Else
Debug "load error"
EndIf
FreeMemory(*buffer)
EndIf
End