[OP編輯#1:事實證明,exiftool 創建者/維護者 Phil Harvey 在一篇文章中很好地回答了這個問題ExifTool 論壇上的重複主題]
[由OP編輯#2:從Exif工具常見問題解答:Exif工具是不是保證在嘗試刪除所有元資料時從檔案中完全刪除元資料。請參閱“編寫器限制”。
我想在舊硬碟中搜尋目前備份磁碟機上沒有的照片。格式包括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
刪除 jpeg 中非 Exif、非註解以及其他對影像無貢獻的部分 - 例如 Photoshop 可能留在影像中的資料。
-purejpg
刪除渲染影像不需要的所有 JPEG 部分。剝離各種應用程式可能留在圖像中的任何元資料。
-de
-dc
和選項的組合-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
使用 ImageMagick 代替 MD5identify
來列印簽名圖像檔。尋找具有相同簽署的文件。共享簽名的文件具有相同的內容。
例如,文件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
因此它們是重複的。