先說結論
開啟 EXIF 檢視與清除,把照片丟進去,按「清除全部後設資料」。每一個標籤、XMP 和 IPTC 塊、註釋、內嵌的縮圖,列表上所有照片一次全清。畫面本身不動,不重新壓縮,不解碼,一個畫素都不變。
動手之前,值得先看看裡面本來有什麼。那通常比人們以為的多,而那份清單本身,就是做這件事的理由。
一張照片裡到底裝著什麼
JPEG 不只是一張壓縮過的畫面。它是個容器,畫面旁邊還坐著好幾塊資訊,是你的相機、手機或者修圖軟體寫進去的。
- EXIF。最主要的那一塊。相機廠牌和型號、鏡頭、曝光引數、ISO、精確到秒的日期時間、顯示時該轉成什麼方向,而在一部給相機開著定位的手機上,還有精確到幾米的 GPS 位置。相機機身序列號也常常在裡面。
- GPS。嚴格說是 EXIF 的一部分,值得單拎出來說,因為它是最要命的那一條。它按度分秒記錄,而這種寫法有一個突出的本事:看起來一點也不像一個地址。
- XMP。修圖軟體寫進去的一段 XML。裡面可以有你的名字、你用的軟體、評級、關鍵詞、編輯歷史,還有一份 EXIF 若干欄位的副本,所以只清 EXIF 是不夠的。
- IPTC。更老的一塊,裝的是圖說、署名、來源和版權這些欄位,新聞界和相簿一直在用。
- 內嵌縮圖。畫面的一份小副本。它在寫檔案時產生,而畫面被編輯之後,它未必會跟著重新產生,所以一張裁過的照片,可能帶著一張顯示著被裁掉部分的縮圖到處走。
- maker note。廠商自己那塊沒有公開文件的資料。除了廠商,沒人清楚裡面到底裝了些什麼。
實際上誰看得到
這一節值得說準,因為「嚇死人」和「無所謂」這兩個版本都不對。
大的社交網路在你發帖時多半會清掉後設資料。Facebook、Instagram 和 X 會把上傳的圖片重新編碼,標籤在這一步順帶沒了。這不是出於好心,資料他們自己留著,但確實意味著發到這些平臺上的照片,不會把座標交給每一個看到它的人。
除此之外,幾乎所有地方都原樣保留。郵件附件。多數聊天軟體裡以「檔案」而不是「照片」發出去的圖。論壇上的圖、二手交易的商品圖、個人網站、共享盤、缺陷報告、工單。這些地方檔案都是完整到達的,任何人下載下來,用作業系統內建的工具就能讀出那些標籤。
現實中的風險都很日常,不戲劇化:在家裡拍的二手商品圖、在學校門口拍的孩子、一個看似匿名的帳號發的照片全都共用同一個相機序列號、一句「上週拍的」其實是三月拍的。
為什麼不乾脆另存一遍?
拿修圖軟體或者壓縮工具另存一遍,後設資料確實會沒:畫面被解碼成畫素,再編碼回去,而一張畫布上只有畫素,不帶任何標籤。這辦法管用,代價是畫質,因為那次重新編碼是有損的。
而正經地清後設資料,一分錢代價都沒有。那些標籤坐在壓縮畫面外面的容器裡,不在畫面裡,所以清它們就是從一張清單上劃掉幾項再把清單寫回去。壓縮後的影像資料逐位元組抄過去,結果解碼出來的畫素跟原來一模一樣。這就是該用後設資料工具、而不是用轉換器的全部理由。
例外是你本來就要重新編碼。要是你正打算壓縮或者縮放這張照片,那些標籤會順帶消失,用不著再多走一步。
有一樣該留下:方向
你把手機轉過來,手機並不會把畫面轉過來。它按感測器看到的樣子記錄,另外加一個方向標籤,說明顯示時該怎麼轉。把所有標籤一清,有些看圖軟體就會把你的照片橫著顯示。
所以這裡的工具有個「保留方向標籤」的選項,預設開著。它會寫回一個極小的 EXIF 塊,裡面只有這一個標籤,而且只對確實需要它的照片寫。GPS、時間戳、序列號那些,照樣一個不剩。
你要是寧可檔案裡一點 EXIF 都不剩,那就把它關掉,然後在發出去之前先看一眼結果,因為通常等著你的就是一張躺倒的照片。
改,而不是刪
對多數人來說,全清就是對的答案。有時候不是:攝影師可能想留下版權資訊和拍攝引數,只把位置去掉;做檔案的人可能得訂正一個日期,因為當初相機的時鐘就是錯的。
兩件事都辦得到。位置可以單獨刪掉,文字類標籤、日期、ISO、方向和解析度都能就地修改。
有一條提醒對所有做這件事的工具都成立,不只這一個:寫檔案會重建整個 EXIF 塊,而 maker note 裡存的是指向原來那個塊的偏移量。所以重建之後的 maker note,廠商自己的軟體可能就讀不出來了。你要是在意這個,那就把 maker note 刪掉,或者乾脆不改這個檔案。
支援的格式,以及不能這麼辦的那些
JPEG、PNG 和 WebP 都能乾乾淨淨地重寫,這裡的工具管的就是這三種。
HEIC,也就是 iPhone 預設存的那個,還有 AVIF,都是巢狀原子搭起來的盒式格式,得換一整套解析器。工具認得出它們,會直說做不了,而不是給你一個壞檔案。你手上是 HEIC 的話,把它轉成 JPEG,後設資料會作為轉換的副產品被清掉。
裸 TIFF 也不做,理由還更有意思些:在 TIFF 裡,後設資料和畫素資料用的是同一套偏移量,所以刪標籤就意味著把畫面自己的定址也重寫一遍。這事能做,但那是另一件事。
一個值得養成的習慣
發之前查,別發完了才查。讀那些標籤只要幾秒鐘,而在列出全部標籤之前,那份「值得知道」的清單已經把位置、時間戳、序列號這些點出來了,所以你不必事先知道該找什麼。
位置先按十進位度顯示,這是故意的。「北緯 51 度 30 分 26 秒」看不出這張照片其實點名了它是在哪棟樓裡拍的;而一對能直接貼進地圖的小數,看得出來。
別為了搞清裡面有什麼,先把照片傳上去
這個問題慣常的解決方式裡有一層特別的諷刺:一個人擔心自己的照片洩露了什麼,於是把它傳到一個網站上去查。現在這個網站手裡有了照片、座標、時間戳和序列號,還有一份存在他們自己硬碟上的畫面副本。
根本沒這個必要。讀取和重寫 JPEG 外面那層容器,也就幾百行解析程式碼,瀏覽器跑得好好的,所以這裡的工具壓根沒有聯網功能:沒有 fetch,沒有 XMLHttpRequest,就算有什麼東西想發檔案,也沒有方法可走。開一次頁面,斷網,它照常運作。
這個說法怎麼在本站或者別處核實,把檔案傳給線上轉換器安全嗎?裡寫了,而在所有檔案類型裡,最值得核實的就是這一類。