你在網頁上對一張圖按右鍵、存檔,結果落到磁碟上的是 某某.jfif。你的影像軟體打不開它。預覽是空白的。看起來像是有人塞給你一個沒人聽過的格式。
並沒有。JFIF 檔案就是 JPEG。幾乎每一次,它的位元組都和一個 .jpg 會裝的內容一模一樣——唯一變的是點後面那三個字母。
這份混亂背後有一個區分,值得搞懂一次。
JPEG 是一種壓縮方法——一個描述「怎麼把圖片變成更少資料」的標準。它完全沒有說那些資料該怎麼存成檔案。
JFIF——JPEG File Interchange Format——是對第二個問題的一個回答。它是那個外包裝,說的是「這裡有 JPEG 壓縮過的資料、這是它的解析度、這是顯示它需要的色彩資訊」。它在 1992 年發表,正是因為 JPEG 標準把檔案格式留白,而各家廠商各自發明了互不相容的版本。
所以 JFIF 不是 JPEG 的替代品。它是當初讓 JPEG 檔案能夠互通的那個容器,而且你磁碟上絕大多數的 .jpg 本來就已經是它了。
這是個怪癖,不是任何人刻意做的決定。
瀏覽器存圖的時候,會問作業系統「這個宣告的類型——image/jpeg——對應哪個副檔名」。在 Windows 上,那個查詢可能回傳 .jfif 而不是 .jpg,因為登錄檔裡的對應是那樣寫的。技術上正確,實務上沒有幫助——這就是為什麼很多從來沒見過 .jfif 的人會突然開始遇到它。
圖片本身沒有任何不同。伺服器送的是 JPEG,瀏覽器存的是 JPEG,只是給它貼上了 JPEG 的另一個合法副檔名。
一般來說,改副檔名是個壞建議。把 photo.webp 改成 photo.jpg 並不會轉換任何東西;它只會產生一個謊報自己身分的 WebP 檔案,而相信檔名的軟體會以令人困惑的方式失敗。
JFIF 是例外,因為根本沒有東西需要轉換。那個檔案已經是 JPEG 了。把 image.jfif 改成 image.jpg,是在替一個內容本來就符合那個標籤的檔案換標籤。
這也表示改名是無損的。沒有重新編碼發生,所以不會有「把 JPEG 轉成 JPEG」那種畫質衰減。如果某個程式純粹因為副檔名而拒收你的檔案——而很多程式確實只看副檔名——改名就是完整的解法。
有一個真正的技術差異,而且偶爾會要緊。
相機和手機拍出來的照片,嚴格說多半不是 JFIF——它們是 JPEG/Exif,另一種外包裝,帶著一個 EXIF 區塊:相機型號、曝光設定、日期、GPS 座標,以及那個告訴軟體「這張圖哪邊是上」的方向標籤。
JFIF 沒有對應的位置。一個純粹是 JFIF 的檔案完全不帶 EXIF。
實務上兩者通常是混的——一個檔案可以同時有 Exif 區塊和 JFIF 標頭,而且大多數都是。但如果你從網站存下一張圖、發現它沒有相機資訊也沒有 GPS,那常常不是網站把它剝掉了:可能單純是那張圖從一開始就沒帶過 Exif。
有一個後果值得串起來:沒有 EXIF 就沒有方向標籤,所以 JFIF 不會是那種「因為一句旋轉指示而橫躺」的圖片。它的像素就是它的像素。
改名解決的是副檔名問題。真的想要不一樣的東西時才轉檔:
還有一個只要牽涉 JPEG 就適用的警告:JPEG 轉 JPEG 每一次都會掉畫質。那是失真壓縮,所以每一輪都再丟掉一點。如果改名就能解決你的問題,優先選它——它是這裡唯一不花代價的選項。
這個行為來自作業系統的類型對應,不是瀏覽器,所以同一台機器上換瀏覽器也一樣。要改的話是去編輯那條把 image/jpeg 對應到副檔名的登錄檔項目——那是系統層級的改動,值得和「偶爾改個檔名」權衡一下。
image/jpeg 對應到 .jfif.jpg 安全而且無損——這在副檔名更動裡很不尋常