相片中究竟包含了什麼

直接打開手機裡的一張相片,其實您看到的圖片只是檔案的一部分。隨附在圖片周圍的是相機在按下快門同一瞬間寫入的中繼資料區塊:裝置品牌和型號、鏡頭、曝光設定、快門按下的確切時間、作業系統版本,以及(當開啟定位服務時)您所站位置的經緯度,精確度通常在幾米以內。

這些資訊在影像中都是不可見的,但所有資訊都會隨檔案一起傳送。將其作為電子郵件附件發送、放入共用資料夾、發布閒置商品資訊,所有這些欄位都會被一併發送。

上述工具會讀取該資料區塊並在移除任何內容之前將其展示給您,因為那些實實在在的數字最具說服力。僅說「這張相片包含 EXIF 中繼資料」顯得抽象,但能精確定位到您家大門的座標對數,卻讓人無法忽視。

僅剝離資料,不重新編碼

移除影像中繼資料有兩種方法,但只有一種是正確的。

比較簡單的方法是將圖片繪製到 HTML 畫布上並再次儲存。中繼資料會因此消失,因為畫布根本不承載這些資料。但這種方法會重新壓縮圖片——在相機的基礎之上進行第二次有損的 JPEG 壓縮——並丟棄嵌入的色彩設定檔。因此,「清理過」的檔案在畫質上會明顯遜色於原圖,並且顏色也會出現偏差。大多數免費的中繼資料清除工具都是這樣運作的,這就是為什麼您拿回的檔案通常大小不同,且畫面也會有細微差異。

本工具則採用了另一種做法。JPEG 是一系列標記段的組合;PNG 是一系列資料區塊;WebP 則是一個 RIFF 容器。中繼資料存在於每個特定、可識別的段中——JPEG 中的 APPn 區塊,PNG 中的 eXIftEXtiTXtzTXttIME 區塊,WebP 中的 EXIFXMP 區塊。移除它們的方法就是遍歷檔案自身的結構,跳過這些區塊,並將其他所有內容原封不動地複製過來。

在這個過程中,壓縮圖片從未被解碼。這意味著您下載的檔案中的影像資料與您提供的檔案中的影像資料是逐位元組(bit-for-bit)一致的——不是「視覺上一致」,不是「高畫質」,而是完全相同。這兩個檔案的唯一區別就在於被剝離出來的中繼資料。

我們不移除的內容及其原因

有兩個元素被特意保留了下來,並配有核取方塊展示給您,以防您不贊同我們的做法。

色彩設定檔。 ICC 設定檔描述了像素所編碼的色彩空間。現代手機拍攝的相片通常具有廣色域,如果沒有設定檔,廣色域相片會被解釋為普通的 sRGB,從而導致渲染錯誤——通常表現為色彩褪色發白,有時也會出現刺眼的色彩。設定檔描述的是影像,而非攝影師,因此預設保留。

旋轉標記(當相片需要時)。 手機在您旋轉相機拍攝時並不會真正旋轉像素;它們會按照感測器感應的方向儲存相片,並寫入一個簡單的 EXIF 數字來說明應該如何旋轉顯示。移除該數字,清理後的副本在任何遵循該標準的應用程式中都會顯示為橫向。當某張相片依賴該標記時,本工具會重新產生一個極簡的資料區塊,其中僅包含這一個值,而不含其他任何資訊——沒有相機型號,沒有時間戳記,沒有位置資訊。

您其他相片的安全狀況

在發送檔案前進行清理解決了在「分享」層面的問題,但對於您相機相簿中仍保留的那些相片,這無濟於事。它們依然保留著本工具剛剛移除的每一個欄位,並且任何有權存取該裝置的應用程式或人都能讀取這些資訊。

這正是 Vaultine 存在的意義:它是一個加密保險庫,檔案透過裝置本地端的 AES-256-GCM 進行鎖定,由內建的安全檢視器打開而非解密到磁碟上,並且透過圖案或 PIN 碼解鎖而非依賴帳號。它與本頁面的功能不同——Vaultine 用於儲存檔案,而不是編輯其中繼資料——但它們是保護隱私這一理念的兩個方面。您分享的相片會洩露您的行蹤,而您保存的相片應該被鎖定。