В любом случае (инструменты командной строки) для вычисления MD5-хэша для.NEF (также.CR2, .TIFF) независимо от метаданных?
Есть ли в любом случае (инструменты командной строки) для вычисления MD5-хеша для.NEF (также.CR2, .TIFF) независимо от метаданных, например, EXIF, IPTC, XMP и т. Д.?
Хэш MD5 должен быть таким же, как только мы обновим любые метаданные внутри файла изображения.
Я искал некоторое время, самое близкое решение:
exiftool test.nef -all= -o - -m | md5
но 'exiftool -all=' по-прежнему сохраняет набор тегов EXIF в выходном файле. Хеш MD5 можно изменить, если я обновлю оставшиеся теги.
3 ответа
ImageMagick
есть способ сделать именно это. Он устанавливается в большинстве дистрибутивов Linux и доступен для OSX (в идеале через homebrew
) а также винда. Существует побег для image signature
который включает в себя только данные пикселей, а не метаданные - вы используете это так:
identify -format %# _DSC2007.NEF
feb37d5e9cd16879ee361e7987be7cf018a70dd466d938772dd29bdbb9d16610
Я знаю, что он делает то, что вы хотите, и что вычисленная контрольная сумма не изменяется, например, когда вы изменяете метаданные в файлах PNG, и я знаю, что она правильно вычисляет контрольную сумму для CR2
а также NEF
файлы. Тем не менее, я не имею привычки изменять файлы RAW, такие как у вас, и не проверял, что в этом случае все идет правильно, хотя я был бы поражен, если бы этого не произошло! Поэтому, пожалуйста, проверьте перед использованием.
Причина, по которой все еще остаются некоторые данные Exif, заключается в том, что данные изображения для файла NEF (и аналогичных типов файлов на основе TIFF) расположены в этом блоке Exif. Удалите это, и вы удалили данные изображения. См. ExifTool FAQ 7, в котором есть пример ярлыка, который может вам помочь.
Я предполагаю, что ваше намерение состоит в том, чтобы убедиться, что фактические данные изображения не были подделаны.
Альтернативный подход к извлечению метаданных может состоять в том, чтобы преобразовать изображение в формат, который не имеет метаданных.
ImageMagick - это широко известный открытый код (лицензия Apache 2) для работы с изображениями и их преобразования. Он предоставляет библиотекам различные языковые привязки, а также инструменты командной строки для различных операционных систем.
Вы можете попробовать:
convert test.nef bmp:- | md5
Это преобразует test.nef в bmp на stdout и передает его в md5.
AFAIR bmp не поддерживает метаданные, и я не уверен, что ImageMagick даже сохраняет метаданные при конверсиях.
Это будет работать только с одиночными файлами изображений (то есть не мульти-изображения TIFF или GIF-анимации). Существует также небольшая вероятность того, что в изображение могут быть внесены некоторые изменения, которые приведут к тому же преобразованию из-за преобразований цветового пространства, но эти изменения не будут видны.