
背景
我正在對我的數位照片進行一些備份,我注意到有些照片從我的相機匯入了兩次到兩個不同的資料夾。那不是問題。
問題是我在比較檔案大小時發現一些重複檔案較小(4.6MB 與 5MB)。我注意到較小的Microsoft Photo Viewer
在 Exif 資料的「程式名稱」欄位中,而較大的則在該欄位中包含我的相機型號。此外,高度和寬度尺寸已交換(圖像已旋轉)。
問題
為什麼我的照片被竄改了?
文件大小的差異是否表明我在操作中失去了一些圖像品質?
- 或者 Windows 可能使用比我的相機更有效的 JPEG 壓縮演算法? (假設它們都使用最低等級的 JPEG 壓縮)
- 或是照片的方向是否有某些因素會導致 JPEG 壓縮方式有所不同?
答案1
Windows在旋轉照片時加入了兩個標籤:Software(Exif)和CreatorTool(Exif)。不過,它在 Windows 資源管理器中顯示為一個。
為什麼會被操縱? Windows 可能會根據相機的旋轉標籤旋轉照片。
照片可以透過兩種方式無損旋轉(也許更多?)。一是Exif旋轉標籤。這只是圖像瀏覽器的數據,它應該顯示旋轉的圖像。第二個操作影像資料(「真實」旋轉),但不會遺失資料*。如果您看到兩張照片都旋轉了,則表示其中一張具有 Exif 旋轉標籤,而第二張確實是由 Windows 旋轉的。如果您的圖像瀏覽器支援 Exif 旋轉標籤,您會看到兩張相同的照片。
為什麼尺寸改變了?沒有檔案很難評斷。我想說的是縮圖。有些相機會為 JPEG 檔案添加非常大的縮圖,而 Windows 要么將其刪除,要么將其更改為自己的。在這種情況下,照片不會被觸及,但元數據 - 準確地說是“照片中的照片”。您可以查看 exiftool 資訊 ( exiftool filename.jpg
) 並比較元資料是否發生變更。特別查看有關二進位資料的資訊。或者您可以向此處發送兩個文件 - 旋轉的和原始的 - 我會檢查一下。
JPEG 壓縮 - 我懷疑 Windows 會重新壓縮您的 JPEG。在這種情況下,它可能只執行無損操作,因此僅更改元資料。
我建議您自己拍攝照片,不要使用任何工具 - 也不是 Windows,也不是相機製造商提供的工具。
順便說一句,如果需要,您可以刪除這些標籤(命令對所有具有 .jpg 副檔名的檔案遞歸工作,從目前目錄開始):
exiftool -preserve -EXIF:Software= -if "$EXIF:Software =~ /(^Microsoft Windows Photo Viewer)/" -r -ext jpg .
exiftool -preserve -XMP:CreatorTool= -if "$XMP:CreatorTool =~ /(^Microsoft Windows Photo Viewer)/" -r -ext jpg .
如果一切順利,請使用以下命令刪除備份
exiftool -delete_originals -r -ext jpg .
*
想像一下每個方形圖塊上都有 8x8 像素的圖像 - 然後旋轉每個圖塊 - 這就是 Windows 所做的。問題是當圖塊不是 8x8 時,也就是您無法將高度或寬度除以 8。
答案2
我可能在舊版的 Microsoft 照片檢視器中發現了另一個錯誤。我遇到了一串在 EXIF 資料中標記為“Microsoft Photo Gallery 6.0.6001.18000”的圖像。
XResolution 和 YResolution 被錯誤地標註,要么是 1/96,而不是應有的 96/1,要么有時是 0/1,有時是“無限”,我不確定它試圖代表什麼。我應該補充一下,這是縮圖分辨率,因此它可能表明 MS 照片檢視器正在創建縮圖。
當我試圖製作一本書時,這在 archive.org 上引起了問題。
由於此版本的 Microsoft 照片庫早已過時,我認為該錯誤已解決。
我必須使用「EXIF Pilot」軟體來修正這些不正確的欄位;如果能夠批次存取 EXIF 欄位就好了,但是批次工具是帶有 EXIF Pilot 的高級插件,而且我也沒有 Total Commander 的付費版本。
這些不是我的文件,因此我猜 EXIF 資料是如何損壞的,但我懷疑它是 Microsoft Photo Viewer。