EXIF 清除的運作方式
JPEG 檔案是一連串稱為 APP 標記的標籤片段,緊接在雙位元組 SOI 簽名(0xFFD8)之後開始。EXIF 資料位於 APP1,GPS 作為子 IFD 存在於同一個 APP1 區塊中,IPTC 位於 APP13。清除器會逐一走訪每個標記,識別攜帶中繼資料的標記,將其移除,然後將剩餘的資料重新組裝為有效的 JPEG。
- 解析 APP 標記. 工具讀取原始 ArrayBuffer 並逐位元組走訪 JFIF 標記序列。每個雙位元組標記標籤標識一個片段類型:APP0(JFIF 標頭)、APP1(EXIF 和 XMP)、APP13(Photoshop 和 IPTC),依此類推直到 APP15。解析器在觸碰任何內容之前,先在一個小表格中記錄每個片段的偏移量和位元組長度,使原始緩衝區在記憶體中保持完整。
- 解碼 EXIF 標籤. APP1 的內容是一個帶有四個影像檔案目錄的迷你 TIFF 結構:第 0 IFD(主影像屬性)、Exif SubIFD(曝光、鏡頭、焦距、ISO)、GPS IFD(緯度、經度、高度、方向)和第 1 IFD(嵌入縮圖)。每個標籤帶有一個數字代碼、一個資料類型(位元組、短整數、長整數、有理數、ASCII 字串)和一個值。工具使用 piexifjs 的標籤字典將數字代碼對應到人類可讀的名稱,然後按 IFD 分組在中繼資料面板中呈現。
- 標記 GPS 標籤. GPS IFD 中的任何標籤都會以紅色隱私標記醒目標示。緯度和經度以三個有理數(度、分、秒)加上參考方向(N 或 S、E 或 W)儲存。工具將其轉換為精確到六位小數(赤道附近約 11 公分精度)的有號十進位度數,並在 GPS 面板中顯示結果以及 OpenStreetMap 連結。不會發出任何地圖磚請求——連結在本地產生,僅在您點擊時才會開啟。
- 清除中繼資料. 對於 JPEG 檔案,預設路徑使用 piexifjs 完整移除 APP1 片段,返回一個像素資料不變的新 dataURL。當「保留方向」開啟時,工具在清除前先在
<canvas>上旋轉圖片以符合原始Orientation標籤值(1–8),使視覺結果符合相機的意圖——旋轉被烘焙到像素中而非依賴中繼資料標誌。 - Canvas 重新編碼路徑. 當「保留 ICC 色彩設定檔」關閉時,工具將圖片繪製到隱藏的
<canvas>上,並呼叫canvas.toBlob('image/jpeg', quality)。此路徑會清除所有內容(EXIF、XMP、IPTC、ICC 設定檔、縮圖),並讓您透過 60 到 100 的 JPEG 品質滑桿進行控制。預設值為 92,在多數照片上產生的檔案大小在原始大小的幾個百分點以內,品質與來源無法區分。 - 下載乾淨的檔案. 清除後的 blob 以
<original-name>-stripped.jpg命名提供下載。工具會重新解析結果並確認 EXIF GPS 部分為空,然後才顯示下載連結,確保您不會得到標記為「已清除」但仍含有位置標籤的檔案。PNG 和 WebP 本來就不攜帶 EXIF;對於這些格式,工具會顯示「無 EXIF」訊息並跳過清除步驟。
為什麼在分享前清除 EXIF
- 位置隱私. 智慧型手機預設會在每張照片中嵌入精確的 GPS 座標。從餐廳、辦公室或住家拍攝的 JPEG 在中繼資料中攜帶該地址,精確度約為五公尺。在發布到社群媒體、傳送給陌生人或附加到公開支援票單之前清除 GPS 標籤,可完全移除該位置指紋。
- 出版物中的匿名性. 記者、社運人士和吹哨者在提交照片前會清除 EXIF,因為相機序號、鏡頭韌體版本和建立時間戳記都可以與其他已發布的圖片交叉參照,以識別攝影師。移除這些標籤是任何不應將署名與特定實體設備連結的人的基本操作安全步驟。
- 減小檔案大小. 一般智慧型手機 JPEG 在 APP1 片段中攜帶 5 到 15 KB 的中繼資料,包括 160×120 的嵌入縮圖。相對於 5 MB 的照片來說這是個小數字,但對 1,000 張產品圖片批次清除可在每次上傳往返時節省 5 到 15 MB——在修剪產品目錄、圖庫或 Pinterest 匯出時很有用。
- 移除相機指紋. 相機廠牌、型號、韌體版本、鏡頭識別碼和快門次數形成一個指紋,即使 EXIF 其他方面並不特殊,也能將不同上傳的照片連結起來。如果您在不透露硬體的情況下分享圖片(錯誤報告、比賽投稿、匿名作品集),Exif SubIFD 就是這些識別資訊所在之處。清除它,連結就斷了。
常見應用場景
每當照片易手而其攜帶的中繼資料可能對寄件者或被攝者造成問題時,就需要清除 EXIF。
- 社群媒體上傳:多數平台無論如何都會在伺服器端清除 EXIF,但先在客戶端清除意味著原始座標根本不會傳輸到平台伺服器。如果他們的流水線發生洩漏(或被傳票),原始 GPS 不在他們的日誌中,因為它從未被傳送。
- 新聞和紀錄攝影:通訊社和照片桌需要乾淨的中繼資料,以便署名和說明資訊由編輯台控制,而非相機。AP、路透社和 AFP 的圖片編輯在圖片發往通訊社之前都會進行中繼資料清除步驟。
- 房地產和產品清單:房仲和電子商務賣家經常上傳在房產或倉庫地址拍攝的照片。在上傳前清除 GPS 可防止清單無意間在檔案中公布精確的商業地址——當倉庫是私人住宅或房產仍有住客時特別重要。
實際範例
在最近款式的 iPhone 上拍攝的 3.5 MB JPEG 攜帶約 12 KB 的 APP1 中繼資料:包含方位和高度的 GPS 座標、精確到毫秒的拍攝時間戳記、相機型號和鏡頭識別碼、白平衡設定,以及 160×120 的嵌入縮圖。使用預設的 piexif 路徑清除後,檔案大小降至 3.488 MB。比原始小 12 KB,像素與原始完全相同,並且沒有位置資訊。在您下載之前,上方的 GPS 面板將精確顯示哪些座標被移除了。
什麼是 EXIF 中繼資料?
EXIF(可交換圖像檔案格式)是定義數位相機和智慧型手機如何在圖像檔案中儲存中繼資料的標準。一般智慧型手機 JPEG 攜帶相機廠牌和型號、鏡頭焦距、快門速度、ISO、精確的 GPS 位置(精確到幾公尺)、建立時間戳記,以及一個小型嵌入縮圖——這些在呈現的圖片中完全不可見,但可被任何 EXIF 感知的應用程式讀取,包括作業系統的檔案瀏覽器和多數照片編輯工具。
為什麼在分享照片前應該清除 EXIF?
GPS 標籤會揭露照片的拍攝地點,精確到幾公尺。不清除就分享照片,您就與收到檔案的所有人共享了該位置。相機序號和鏡頭識別碼也可以在不同上傳之間識別攝影師,這對任何以匿名方式發布的人都很重要。清除後,所有這些資訊都會在檔案離開您的裝置之前被移除。
這會影響圖片品質嗎?
預設的 piexif 路徑在不觸碰圖片像素的情況下移除 APP1 片段,因此品質與原始完全相同。Canvas 重新編碼路徑(當「保留 ICC 色彩設定檔」關閉或在旋轉圖片時「保留方向」開啟時使用)會以選定的 JPEG 品質滑桿值重新編碼像素——將滑桿設為 95 或更高,可在多數照片上保持視覺效果接近原始。
iPhone 的 HEIC 檔案怎麼處理?
HEIC 清除取決於您的瀏覽器對原生 HEIC 的支援。Safari 13 以上版本可原生解碼 HEIC;Chrome 和 Firefox 則不支援。如果您的瀏覽器無法顯示 HEIC,請先使用手機的「匯出為 JPEG」選項(在 iOS 相片中:分享 → 選項 → 相容性最佳),然後在此上傳 JPEG。轉換後的檔案清除步驟與其他任何 JPEG 的處理方式相同。
每次清除都在您的瀏覽器本機執行。原始照片不會到達任何伺服器,乾淨的檔案完全從上傳時載入記憶體的 ArrayBuffer 中產生。在上方拖曳一張照片,檢查中繼資料,然後下載清除後的副本。