是否存在end-of-exif / end-of-xmp / end-of-iptc / start-of-data标记,我可以使用它来获取jpg / jpeg(和其他数据)的数据部分的校验和图像格式)?
答案 0 :(得分:1)
我认为这个问题与此问题有关Compute hash of only the core image data (excluding metadata) for an image,如果您正在寻找代码,https://stackoverflow.com/a/10075170/890106会给出一个答案元素。
它可能不适用于所有JPG变体:其中一些可以嵌入多个图像(MPF / CIPA多图片格式,http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/MPF.html处的更多信息),您可能仍然有一些元数据。此外,某些软件在文件末尾以 - [0-9A-F] + - 的形式放置UID,不应读取。最安全的解决方案,如果可能是校验和像素(尽管你仍然可以影响方向,颜色配置文件......)。
答案 1 :(得分:0)
获得像素数据的哈希和的一种简单方法是将JPEG转换为32Bit BMP或者转换为PNG并从中计算哈希值。这将从JPEG中去除所有相关信息,甚至可以匹配具有导致相同像素数据的不同编码的JPEG。当然,你也可以直接使用生成的BMP的内存像素数据(例如,Windows有几个API函数可以从任何支持的图像类型中获取它)。
答案 2 :(得分:0)
您必须查看每种格式。对于JPEG,它看起来像the structure意味着你可以只对以FFEn开头的部分(例如0xFFE1)和校验和在每个标记之后指定的字节进行校验和(看起来长度跟在标记之后是2 big-endian格式的字节)。有关详细信息,请参阅here。
答案 3 :(得分:0)
是jpeg和exif,我不认识其他人。
我所拥有的JPEG规范称为JFIF(JPEG文件交换格式),它来自ISO 10918-1的附录B,与所有ISO规范一样,需要仔细阅读才能弄清楚如何将规范转换为数据结构。我认为this更容易理解
EXIF格式解析很像TIFF格式。每个块都有一个类型和一个大小,所以你只需要遍历块,直到你到达图像数据块。它有一个指向图像数据的指针(实际上是指向条带的指针,但我很确定你可以假设在第一个图像数据到文件末尾之后的所有内容都是图像数据。
exif格式有its own website
答案 4 :(得分:0)
由于您希望针对各种图像格式执行此操作,因此您应该只使用通用图像解压缩库并对未压缩的数据运行校验和。这将允许您匹配相同的图像,即使它们在磁盘上的编码方式不同。
如果您想将自己限制为JPEG,则可以校验SOI和EOI之间的数据。 This answer可以稍微适应您的需要。
答案 5 :(得分:0)
MediaTags支持JPEG,MP3,M4A等校验和支持