不管任何元数据,例如 EXIF、IPTC、XMP 等,是否有(命令行工具)来计算 .NEF(也是 .CR2、.TIFF)的 MD5 哈希?
一旦我们更新图像文件中的任何元数据,MD5 哈希值应该相同。
我搜索了一段时间,最接近的解决方案是:
exiftool test.nef -all= -o - -m | md5
但 'exiftool -all=' 仍然在输出文件中保留一组 EXIF 标记。如果我更新剩余的标签,可以更改 MD5 哈希。
不管任何元数据,例如 EXIF、IPTC、XMP 等,是否有(命令行工具)来计算 .NEF(也是 .CR2、.TIFF)的 MD5 哈希?
一旦我们更新图像文件中的任何元数据,MD5 哈希值应该相同。
我搜索了一段时间,最接近的解决方案是:
exiftool test.nef -all= -o - -m | md5
但 'exiftool -all=' 仍然在输出文件中保留一组 EXIF 标记。如果我更新剩余的标签,可以更改 MD5 哈希。
ImageMagick
有一种方法可以做到这一点。它安装在大多数 Linux 发行版上,可用于 OSX(最好通过homebrew
)和 Windows。有一个转义,image signature
它只包括像素数据而不是元数据——你可以像这样使用它:
identify -format %# _DSC2007.NEF
feb37d5e9cd16879ee361e7987be7cf018a70dd466d938772dd29bdbb9d16610
我知道它可以满足您的要求,并且例如,当您修改 PNG 文件上的元数据时,计算的校验和不会改变,而且我知道它确实为CR2
和NEF
文件正确计算了校验和。但是,我没有像您那样修改 RAW 文件的习惯,并且没有测试过它在这种情况下是否正确 - 尽管如果没有,我会感到震惊!所以请在使用前进行测试。
仍然存在一些 Exif 数据的原因是因为 NEF 文件(以及类似的基于 TIFF 的文件类型)的图像数据位于该 Exif 块中。删除它,您已经删除了图像数据。请参阅ExifTool 常见问题解答 7,其中有一个示例快捷方式标签可以帮助您。
我假设您的目的是验证实际的图像数据没有被篡改。
剥离元数据的另一种方法是将图像转换为没有元数据的格式。
ImageMagick是用于图像处理和转换的知名开源软件(Apache 2 许可证)。它提供了具有各种语言绑定的库以及用于各种操作系统的命令行工具。
你可以试试:
convert test.nef bmp:- | md5
这会将 test.nef 转换为 stdout 上的 bmp 并将其通过管道传输到 md5。
AFAIR bmp 不支持元数据,我不确定 ImageMagick 是否在转换中保留元数据。
这仅适用于单个图像文件(即不适用于多图像 tiff 或 gif 动画)。由于色彩空间转换,也有可能对图像进行一些更改,从而导致相同的转换,但这些更改将不可见。