[編集#1 by OP:この質問は、exiftoolの作者/管理者であるフィル・ハーベイによって非常によく答えられている。ExifTool フォーラムの重複スレッド]
[編集 #2 by OP:からExifTool よくある質問:ExifToolはないすべてのメタデータを削除しようとすると、ファイルからメタデータが完全に削除されることが保証されます。「ライターの制限」を参照してください。
現在のバックアップ ドライブにない写真を古いハード ドライブで検索したいと思います。形式には、jpg、png、tif などのほか、さまざまな RAW 形式 (カメラ モデルやメーカーによって異なります) が含まれます。
私が興味があるのは、画像自体の一意性だけであり、exif タグの値、特定の exif タグ自体の有無、埋め込まれたサムネイルなどの違いによる一意性には興味がありません。
同一の画像の異なるコピー間で破損やデータ破損が見つかるとは思っていませんが、サイズ変更や色の変更による違いだけでなく、破損やデータ破損も検出したいと思います。
[OPによる編集#3:明確にするために: 少数の誤検知は許容可能 (ファイルが一意でないのに一意であると結論付けられる) であり、誤検知は非常に望ましくない (ファイルが重複していると誤って結論付けられる) です。
私の計画は、すべてのメタデータを削除した後、md5sum に基づいて一意性を識別することです。
メタデータを削除するにはどうすればよいですか?
十分であろうexiftool -all= <filename>
?
答え1
とimagemagick
パッケージとJPEGだけでなく簡単に言えば、次のようになります。
mogrify -strip ./*.jpg
これは./
、「-」で始まるファイル名の問題を回避するためです。
からマニュアル:
-strip
画像からプロファイル、コメント、または次の PNG チャンクを削除します: bKGD、cHRM、EXIF、gAMA、iCCP、iTXt、sRGB、tEXt、zCCP、zTXt、日付。
多くの詳細情報と注意事項ここ。
これは @grochmal に似ていますが、はるかに簡単でシンプルです。
答え2
jhead
JPEG ファイルから画像以外のメタデータを削除する機能があります。マニュアル ページには次のように書かれています。
-dc
JPEG ヘッダーからコメント フィールドを削除します。コメントは Exif ヘッダーの一部ではないことに注意してください。
-de
Exif ヘッダーを完全に削除します。他のメタデータ セクションはそのまま残ります。
-di
IPTC セクションが存在する場合は削除します。他のメタデータ セクションはそのまま残します。
-dx
XMP セクションが存在する場合は削除します。他のメタデータ セクションはそのまま残します。
-du
Exif やコメントではなく、画像にも影響しない jpeg セクション (Photoshop が画像に残す可能性のあるデータなど) を削除します。
-purejpg
-de
-dc
イメージのレンダリングに必要のないすべての JPEG セクションを削除します。さまざまなアプリケーションがイメージに残した可能性のあるメタデータをすべて削除します。およびオプションの組み合わせ-du
。
答え3
これは少し古いですが、確かに、exiftool は非常にうまく機能します。
メタデータを表示
exiftool photo.jpg
すべての *.jpg ファイルのメタデータを表示する
注: 拡張子は大文字と小文字を区別。
exiftool -ext jpg
上記と同じですが、サブディレクトリが含まれます。
exiftool -r -ext jpg .
すべてのメタデータを削除する
exiftool -all= -overwrite_original photo.jpg
現在のディレクトリにあるすべての *.jpg ファイルのすべてのメタデータを削除します
exiftool -all= -overwrite_original -ext jpg
上記と同じですが、サブディレクトリが含まれます。
exiftool -all= -r -overwrite_original -ext jpg .
現在のディレクトリにある *.jpg ファイルのすべての GPS メタデータを削除します。
exiftool -gps:all= *.jpg
答え4
MD5の代わりにImageMagickを使ってidentify
印刷します。サイン画像ファイル。同じ署名を持つファイルを探します。署名を共有するファイルは、同じコンテンツを持ちます。
たとえば、ファイルa.png
、b.png
、 はc.png
MD5 チェックサムが異なるため異なります。
$ md5sum *
a9ee60d8237a4b3f6cdd6e57c24b1caf a.png
e8661c4fd7761984a74945e273fd4d09 b.png
21c808d62ff9c7675c1f9ca20d2f6578 c.png
しかし、彼らには共通の特徴があります。
$ identify -format "%# %f\n" *
1c916332636b91704f212eec504c25383c90ed5d1659975a4a5895c48fe80ab8 a.png
1c916332636b91704f212eec504c25383c90ed5d1659975a4a5895c48fe80ab8 b.png
1c916332636b91704f212eec504c25383c90ed5d1659975a4a5895c48fe80ab8 c.png
したがって、それらは重複しています。