J'essaye d'écrire du code pour extraire des informations Exif d'un fichier JPG. Exif est stocké dans le segment APP1 d'un fichier JPG. Selon the Exif spec, le format du segment APP1 est censé commencer comme ceci:Codage de longueur de segment JPG
FF E1 // APP1 segment marker
nn nn // Length of segment
45 // 'E'
78 // 'x'
69 // 'i'
66 // 'f'
Et il va jusqu'à ce qu'il y est un FF
suivi par autre chose que FF
ou 00
. En regardant un JPG dans un éditeur hexadécimal, je peux voir FF E1
et la chaîne Exif
, mais j'ai du mal à décoder les octets de longueur. Un exemple: Dans un jpg, mon éditeur hexadécimal me dit que le segment APP1 a une longueur de 686 octets, mais que les octets de longueur sont F7 C8
.
Comment utiliser ces octets pour obtenir 686 décimales?
Edit: Voici la première partie du fichier exemple:
FF D8 FF E1 F7 C8 45 78 69 66 00 00 4D 4D 00 2A 00 00 00 08
Edit: En fait, je pense que je pourrais savoir ce qui se passe ici. Est-ce que le segment APP1 "contient" d'autres segments? Par exemple, si les données de vignettes ont été considérées comme étant dans APP1, cette longueur semble plus raisonnable. Quelqu'un peut-il confirmer/infirmer cela?
Etes-vous sûr que le segment APP1 n'est pas 63432 octets? Comment savez-vous que c'est 686? C'est probablement 686 plus la taille de la vignette. – Gabe
@gabe J'ai recherché les octets de marqueur 'FF xx' suivants d'un nouveau segment. Est-ce exact? – Blorgbeard
Oui, je m'attendrais à ce qu'un FFDB soit le prochain marqueur (DQT). – Gabe