Domanda

Sto cercando di scrivere un po ' di codice per estrarre le informazioni Exif da un JPG.

Exif memorizzati nel APP1 segmento di un file JPG.Secondo Exif spec, il formato del APP1 segmento dovrebbe iniziare come questo:

FF E1        // APP1 segment marker
nn nn        // Length of segment
45           // 'E'
78           // 'x'
69           // 'i'
66           // 'f'

E si va avanti fino a quando c'è un FF seguita da qualcosa di diverso FF o 00.

Guardando un JPG in un hex editor, posso vedere FF E1 e il Exif stringa, ma sto avendo difficoltà a decodificare il byte di lunghezza.Un esempio:In una jpg, il mio hex editor mi dice che il APP1 segmento 686 byte, ma la lunghezza in byte F7 C8.

Come devo utilizzare tali byte a venire con 686 decimale?

Edit: Ecco la prima parte del file di esempio:

FF D8 FF E1 F7 C8 45 78 69 66 00 00 4D 4D 00 2A 00 00 00 08

Edit: In realtà, penso che potrei sapere cosa sta succedendo qui.Il APP1 segmento di realtà "contenere" altri segmenti?Per esempio, se la miniatura dati sono stati considerati all'interno APP1, quindi la lunghezza che mi sembra più ragionevole.Qualcuno può confermare/negare questo?

È stato utile?

Soluzione

Si scopre che il APP1 settore comprende le miniature (vedere il collegato EXIF documento e scorrere verso il basso per logica pagina 12), in modo che il 686 è un red herring (probabilmente il numero di byte fino a quando la miniatura).F7C8 è il numero effettivo di byte fino a DQT segmento, ed è così grande, perché include una miniatura.

Altri suggerimenti

Non è possibile. Quei byte non rappresentano 686, ma i byte di lunghezza non precedono la stringa "Exif".

Senza vedere il file, è impossibile da diagnosticare. Potrebbe essere buona per inviare il primo 20 hex byte del file.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top