Есть ли вообще (инструменты командной строки) для вычисления хеша MD5 для .NEF (также .CR2, .TIFF) независимо от любых метаданных?

Есть ли вообще (инструменты командной строки) для вычисления хеша MD5 для .NEF (также .CR2, .TIFF) независимо от любых метаданных, например. EXIF, IPTC, XMP и так далее?

Хэш MD5 должен быть таким же, как только мы обновим любые метаданные внутри файла изображения.

Я искал некоторое время, самое близкое решение:

exiftool test.nef -all= -o - -m | md5

но 'exiftool -all=' по-прежнему сохраняет набор тегов EXIF ​​в выходном файле. Хэш MD5 можно изменить, если я обновлю остальные теги.


person XHou    schedule 07.07.2015    source источник
comment
Я нашел решение здесь: stackoverflow.com/questions/23984963. exiv2 rm работает лучше всего. exiftool и convert не могут удалить все метаданные из .nef FILE. Я попробовал exiv2 rm | md5 в моем исходном файле .NEF и файле, выведенном exiftool -all=. Результаты такие же. Выходной файл exiv2 rm больше не отображается. Но мне нужен только хэш MD5, который остается неизменным после обновления любых метаданных файла .NEF. Это работает идеально для моих требований.   -  person XHou    schedule 09.07.2015


Ответы (3)


ImageMagick имеет способ сделать именно это. Он установлен в большинстве дистрибутивов Linux и доступен для OSX (в идеале через homebrew), а также для Windows. Существует побег для image signature, который включает только данные пикселей, а не метаданные — вы используете его следующим образом:

identify -format %# _DSC2007.NEF
feb37d5e9cd16879ee361e7987be7cf018a70dd466d938772dd29bdbb9d16610

Я знаю, что он делает то, что вы хотите, и что вычисленная контрольная сумма не меняется, например, при изменении метаданных в файлах PNG, и я знаю, что он правильно вычисляет контрольную сумму для файлов CR2 и NEF. Тем не менее, я не имею привычки изменять файлы RAW, такие как у вас, и не проверял, что в этом случае это правильно, хотя я был бы поражен, если бы это было не так! Поэтому, пожалуйста, проверьте перед использованием.

person Mark Setchell    schedule 08.07.2015
comment
Я попробовал identify -format на своем .NEF. Результаты различаются для исходного файла и выходного файла exiftool test.nef -all= :( Кстати, я согласен с вами, что изменение .NEF - не очень хорошая привычка. - person XHou; 08.07.2015
comment
Вы не можете ожидать, что вывод ImageMagick будет соответствовать результату exiftool, они используют разные методы. Вам нужно придерживаться одного или другого, а не смеси IM один раз и exiftool следующего. Используйте ImageMagick, чтобы получить контрольную сумму, поэкспериментируйте с файлом NEF, а затем снова используйте ImageMagick, чтобы увидеть, изменился ли он. - person Mark Setchell; 08.07.2015
comment
Мне нужно, чтобы хеш был постоянным после любых метаданных EXIF, независимо от того, какое программное обеспечение изменяет метаданные EXIF. В настоящее время ImageMagic не может работать даже с exiftool. Как я могу ожидать, что вывод identify будет хэшироваться только данными изображения? - person XHou; 09.07.2015

Причина, по которой все еще остаются некоторые данные Exif, заключается в том, что данные изображения для файла NEF (и аналогичных типов файлов на основе TIFF) расположены в этом блоке Exif. Удалите это, и вы удалили данные изображения. См. Часто задаваемые вопросы по ExifTool 7, в котором есть пример ярлыка. тег, который может вам помочь.

person StarGeek    schedule 08.07.2015
comment
Если ярлык, упомянутый в FAQ, не работает, ваша идея может быть единственным выходом. - person StarGeek; 08.07.2015
comment
Я понимаю причину. Мне нужен только хэш MD5 (или другой хэш), который не изменится после обновления любых тегов. Я действительно не хочу удалять все метаданные из файла. - person XHou; 08.07.2015

Я предполагаю, что вы хотите убедиться, что фактические данные изображения не были изменены.
Альтернативным подходом к удалению метаданных может быть преобразование изображения в формат, не содержащий метаданных.
ImageMagick – хорошо известная программа с открытым исходным кодом (лицензия Apache 2) для обработки и преобразования изображений. Он предоставляет библиотеки с различными языковыми привязками, а также инструменты командной строки для различных операционных систем.

Вы можете попробовать:

convert test.nef bmp:- | md5

Это преобразует test.nef в bmp на stdout и направляет его в md5.
AFAIR bmp не поддерживает метаданные, и я не уверен, что ImageMagick вообще сохраняет метаданные при преобразованиях.
Это будет работать только с одиночными файлы изображений (т. е. не мультиизображения в формате tiff или gif). Существует также небольшая вероятность того, что в изображение могут быть внесены некоторые изменения, которые приведут к такому же преобразованию из-за преобразования цветового пространства, но эти изменения не будут видны.

person Eli Algranti    schedule 08.07.2015