如何從圖像檔案中刪除元數據

如何從圖像檔案中刪除元數據

[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.pngb.pngc.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

因此它們是重複的。

相關內容