roherter hat geschrieben:Mit einem Hex editor sehe ich die adressen ff d8 aber ich bekomme das mit dem auslesen nicht hin.
Kann mir da mal jemand auf die sprünge helfen?
#SOI = $FFD8
#EOI = $FFD9
#APP1 = $FFE1
Procedure.w Read2Bytes()
ProcedureReturn ReadByte()&$FF * 256 + ReadByte()&$FF
EndProcedure
Procedure.l IsJpegExifFormat(dateiname.s)
; die ersten zwei Bytes sind SOI,
; die letzten zwei Bytes sind EOI
; die zweiten zwei Bytes sind APP1
Protected soi.w, app1.w, eoi.w
If ReadFile(0, dateiname)
FileSeek(0)
soi = Read2Bytes()
Debug soi&$FFFF
app1 = Read2Bytes()
Debug app1&$FFFF
FileSeek(Lof()-2)
eoi = Read2Bytes()
Debug eoi&$FFFF
CloseFile(0)
If soi&$FFFF = #SOI And app1&$FFFF = #APP1 And eoi&$FFFF = #EOI
Debug "It's a JPEG/EXIF!"
ProcedureReturn 1
EndIf
EndIf
ProcedureReturn 0
EndProcedure
Bevor ich jetzt endlos geschlagen werde, weil ich nicht ReadWord() verwendete, sondern eine eigene Prozedur entworfen habe: im EXIF-Format gibt es sowohl Big- als auch Little Endian-Daten. Deshalb habe ich die Leseprozedur abgekoppelt, um darauf reagieren zu können. Nutze ich hier natürlich nicht, habe ich aber vorgesehen..
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."
Zitat:
"Ich kann mich vor die Meute stellen und für Nichts kämpfen. Ich kann aber auch einen Schritt zur Seite gehen, die Meute vorbeiziehen lassen und dabei meine Zeit angenehm bei Freunden verbringen.". Da hat er Recht, mein Pap's.
nein, nein, das funktioniert so nicht. Für die Marker im Header einer
JPG-Datei sind keine festen Plätze reserviert. Da floatet alles. Dafür sind die
Marker aber eindeutig. Die Werte (Data's) nach den Markern können
unterschiedlich lang sein. Manche Header von JPG's sind tausende Bytes
gross, andere kommen mit dem minimum von vielleicht 100 Bytes aus. In
JPG's können ganze Romane stehen.
Hatte mal eine gute Seite im Internet gefunden, die alles schön erklärt hat.
Leider will mir auf die schnelle der Link nicht mehr einfallen. Werde mal
danach suchen und melde mich wieder.
Zitat:
"Ich kann mich vor die Meute stellen und für Nichts kämpfen. Ich kann aber auch einen Schritt zur Seite gehen, die Meute vorbeiziehen lassen und dabei meine Zeit angenehm bei Freunden verbringen.". Da hat er Recht, mein Pap's.