Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
Delphi 6 Professional
|
AW: GetJPGSize Funktion (wollen wir sie verbessern?)
14. Feb 2020, 14:09
Hmm..
Ist Dir eigentlich bewusst, wie sich ein Header einer JPG aufbaut?
Am Anfang (2 Bytes) das SOI (FFD8)
Dann gefolgt von mehreren Segmenten (beliebige Anzahl, einige Typen jedoch nur jeweils einmal).
Zum Abschlus (2 Bytes) das SOS (FFDA) und somit das Ende des Headers...
Danach kommen die eigentlichen Bilddaten...
Jedes Segment besteht aus einem Identifer (2 Bytes), das erste Byte ist FF das 2. Byte gibt den Typ des Segmentes an.
Nach dem Identifer kommt immer die Länge der Daten des Segmentes (2 Bytes).
Im Anschluss die Daten des Segmentes mit der angegebenen Länge (da die 2 Bytes der Länge auch in der Länge eingerechtet sind müssen dieses abgezogen werden).
Es gibt die Segmente welche die Kodierung definieren, Kommentare und weitere, wie auch das EXIF-Segment.
Ohne die Längenangabe des aktuellen Segments kannst Du den Anfang des nächsten Segments nicht finden..
Und eben in den Segmenten (SOFx) für die Definition der Kodierung ($C0, $C1.. ) steht in den Daten die Größe drinnen.
Somit ist dein else Zweig (If Not (BD In [$01,$D0,$D1,..) schonmal Blödsin, da es egal ist, welches andere Segment kommt, da Du nur nach dem SOFx suchst.
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
|