Il existe deux types courants de fichiers JPEG: JPEG/JFIF et JPEG/Exif.
Les deux spécifications (JFIF et Exif) requièrent que leur en-tête correspondant apparaisse directement après le marqueur SOI (Début de l'image).
Dans le cas de JFIF, il s'agit d'un marqueur APP0, dans le cas d'Exif, il s'agit d'un marqueur APP1.
Il est possible d'avoir un fichier JPEG/JFIF avec un bloc Exif quelque part plus tard dans le fichier. J'ai remarqué que cela se produit lors de l'exportation d'un fichier JPEG/Exif depuis iPhoto. iPhoto finit par le convertir en un fichier JPEG/JFIF, mais conserve les métadonnées Exif quelque part plus tard dans le fichier. Cependant, au-delà de la condition que l'en-tête pour le format de fichier correspondant doit venir en premier, il n'y a aucune restriction sur la commande d'autres blocs de marqueur APP # dans le fichier. Par conséquent, le bloc Exif peut se produire à une position arbitraire dans un fichier JPEG/JFIF.
La norme exif le confirme - http://www.digicamsoft.com/exif22/exif22/html/exif22_17.htm?gInitialPosX=10px&gInitialPosY=10px&gZoomValue=100 –