В любом случае (инструменты командной строки) для вычисления 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-анимации). Существует также небольшая вероятность того, что в изображение могут быть внесены некоторые изменения, которые приведут к тому же преобразованию из-за преобразований цветового пространства, но эти изменения не будут видны.

Другие вопросы по тегам