Pregunta

Hay de fin de exif / fin-de-xmp / fin-de-iptc / inicio-de-marcadores de datos que podría utilizar para obtener una suma de comprobación de sólo la parte de datos de un archivo jpg / jpeg (y otros formatos de imagen)?

¿Fue útil?

Solución 6

MediaTags tiene soporte para la suma de comprobación JPEG, MP3, M4A, etc

Otros consejos

Creo que esta pregunta está relacionada con éste Calcular hash sólo el (excluyendo metadatos) datos de la imagen del núcleo para un imagen, https: // stackoverflow.com/a/10075170/890106 da un elemento de respuesta si usted está buscando un código.

Puede que no funciona con todas las variantes de JPG sin embargo: algunos de ellos pueden incrustar varias imágenes (formato MPF / CIPA Multi-Picture, más información en http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/MPF.html ) y todavía podría tener algunos metadatos. Además, algunos programas de poner UID en forma de - [0-9A-F] + - al final del archivo y no debe ser leído. solución más segura si, probablemente, a los píxeles de suma de comprobación (aunque todavía puede tener influencia de la orientación, el perfil de color, ..).

Una manera fácil de obtener una suma de hash de sólo los datos de píxeles sería convertir el JPEG en un 32 bits BMP o, alternativamente, en PNG y para calcular un hashsum de eso. Esto se tira toda la información asociada a los archivos JPEG y archivos JPEG siquiera coincidir con codificaciones diferentes personas que conducen a los mismos datos de píxeles. Se podría, por supuesto, también utilizar los datos de los píxeles en la memoria de los BMPs que resultan directamente si lo tiene (es decir, Windows tiene varias funciones de la API de obtener de cualquier tipo de imagen es compatible).

Sí a jpeg y exif, no sé a los demás.

El JPEG especificaciones que tengo se llama JFIF (JPEG File Interchange Format) se trata del Anexo B de la norma ISO 10918-1 y como todas las especificaciones de la ISO, se necesita una cuidadosa lectura de averiguar cómo traducir las especificaciones en las estructuras de datos.Creo este es mucho más fácil de seguir

el formato EXIF analiza tanto como el formato TIFF.cada fragmento tiene un tipo y un tamaño, por lo que usted acaba de caminar de los fragmentos hasta llegar a la imagen de bloque de datos.tiene un puntero a los datos de la imagen (en realidad punteros a tiras, pero estoy bastante seguro de que usted puede asumir el todo después de la primera tira de datos de imagen para el final del archivo de datos de imagen.

El formato exif ha su propio sitio web

tendrá que buscar en cada formato. Para JPEG, parece que la estructura implica que sólo puede hacer una suma de comprobación de la secciones que comienzan con FFEn (por ejemplo 0xFFE1) y la suma de comprobación de los bytes especificado después de cada marcador (parece que la longitud sigue el marcador y es de 2 bytes en formato big-endian). Para más detalles, véase aquí .

Desde que quieres hacer esto para varios formatos de imagen, sólo debe utilizar una biblioteca de imágenes de descompresión de propósito general y ejecutar la suma de comprobación de los datos sin comprimir. Esto le permite igualar imágenes idénticas, incluso si están codificados de manera diferente en el disco.

Si desea limitarse a JPEG, puede suma de comprobación de los datos entre SOI y EOI. Esta respuesta puede ser ligeramente adaptada para hacer lo que necesita.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top