Domanda

Esistono marcatori di fine exif/fine-xmp/fine-iptc/inizio dati che potrei utilizzare per ottenere un checksum solo della parte dati di un jpg/jpeg (e altri formati di immagine) ?

È stato utile?

Soluzione 6

MediaTags ha il supporto checksum per JPEG, MP3, M4A, ecc

Altri suggerimenti

Credo che questa domanda è legata a questo Calcola hash dei soli dati di immagine di base (esclusi i metadati) per un'immagine , https: // stackoverflow.com/a/10075170/890106 dà un elemento di risposta, se siete alla ricerca di codice.

potrebbe non funziona con tutti JPG varianti però: alcuni di essi possono incorporare più immagini (MPF / CIPA Multi-Formato immagine, informazioni a http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/MPF.html ) e si potrebbe ancora avere alcuni metadati. Inoltre, alcuni software messo un UID sotto forma di - [0-9A-F] + - alla fine del file e non deve essere letto. soluzione più sicura se probabilmente per pixel checksum (anche se si può ancora avere influenza dell'orientamento, profilo colore, ..).

Un modo semplice per ottenere una somma hash di appena i dati dei pixel sarebbe quello di convertire il JPEG in un 32Bit BMP o in alternativa in PNG e per calcolare un hashsum da questo. Questo eliminerà tutte le informazioni associate alle JPEG e sarebbe anche corrispondere JPEG con codifiche le diverse che portano agli stessi dati di pixel. Si potrebbe naturalmente utilizzare anche i dati dei pixel in memoria del risultante BMP direttamente se si dispone di esso (vale a dire di Windows ha diverse funzioni API per farlo da qualsiasi tipo di immagine supportato).

Sì a jpeg ed EXIF, agli altri non so.

Le specifiche JPEG che ho si chiamano JFIF (JPEG File Interchange Format), provengono dall'allegato B della norma ISO 10918-1 e, come tutte le specifiche ISO, è necessaria un'attenta lettura per capire come tradurre le specifiche in strutture dati.Penso Questo è molto più facile da seguire

il formato EXIF ​​viene analizzato in modo molto simile al formato TIFF.ogni blocco ha un tipo e una dimensione, quindi percorri i blocchi fino ad arrivare al blocco dei dati dell'immagine.ha un puntatore ai dati dell'immagine (in realtà puntatori alle strisce, ma sono abbastanza sicuro che puoi presumere che tutto dopo la prima striscia di dati dell'immagine fino alla fine del file siano dati dell'immagine.

Il formato EXIF ​​​​ha il proprio sito web

Dovrete guardare ogni formato. Per JPEG, sembra la struttura implica che si può solo fare un checksum del sezioni che iniziano con FFEn (es 0xFFE1) e checksum i byte specificati dopo ciascun marcatore (sembra che la lunghezza segue il marcatore e è di 2 byte in formato big endian). Per ulteriori dettagli, vedere qui .

Dal momento che si vuole fare questo per diversi formati di immagine, si dovrebbe utilizzare una libreria di immagini di decompressione general-purpose ed eseguire il checksum sui dati non compressi. Questo vi permetterà di abbinare immagini identiche, anche se sono codificati in modo diverso sul disco.

Se si vuole limitarsi a JPEG, è possibile checksum dei dati tra SOI e EOI. Questa risposta può essere leggermente adattata per fare quello che ti serve.

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