Meine fragen :1.Wie kann ich die länge der exif daten auslesen?
2.Wie kann ich auslesen ob das Bild überhaupt exif daten enhält?
Ich hoffe ich habe mich verständlich ausgedrückt.

ReadWord(), ReadData()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?
Code: Alles auswählen
Procedure PicSize(Pfad$)
Protected B,H,FH1,Pos,FS, ad$,Wert
If UCase(Left(GetExtensionPart(pfad$),1))="J"
OpenFile(FH1, Pfad$)
If (ReadByte()&$FF)*256+(ReadByte()&$FF)=$FFD8 ; SOI (Start of Image)
While Loc()<Lof()
; Nächstes Byte beginn eines Markers ($FF)?
If ReadByte()&$FF=$FF
;scheint so, nächste Kennzeichnung
Wert=ReadByte()&$FF
; prüfen auf $FF, danach folgt nämlich *keine* Segmentlänge
If Wert=$FF
FileSeek(Loc()-1)
Else
; prüfen, ob ImageInformationTable
If Wert=$C0 Or Wert=$C2
ReadWord() ; Segmentlänge in Bytes (00 11)
ReadByte() ; ? (08)
B=(ReadByte()&$FF)*256+(ReadByte()&$FF) ; Breite
H=(ReadByte()&$FF)*256+(ReadByte()&$FF) ; Höhe
Break
; prüfen, ob "Start of Scan" (SOS)
ElseIf Wert=$DA
; weiterlesen bis $FF
PicSize1:
Repeat
Wert=ReadByte()&$FF
Until Loc()=Lof() Or Wert=$FF
If Loc()=Lof(): Break: EndIf
Wert=ReadByte()&$FF
If Wert=$00: Goto PicSize1: EndIf ; $FF 00 normales Datum
If Wert=>$D0 And Wert<=$D7: Goto PicSize1: EndIf ; $FF D0-D7 Restart Marker
EndIf
FileSeek(Loc()-2+(ReadByte()&$FF)*256+(ReadByte()&$FF)) ; Segmentlänge überspringen
;FileSeek(Loc()+sprung-2)
;Debug "Sprung nach $FFDA= "+Hex(sprung)
EndIf
EndIf
Wend
EndIf
PicSizeEnd1:
CloseFile(FH1)
ProcedureReturn B*H
Else
ProcedureReturn 200000
EndIf
EndProcedure