核心區別:無損壓縮對比有損壓縮
JPEG 使用有損壓縮。它丟棄人眼不太會注意到的影像資訊——尤其是陰影、漸層和紋理區域中細微的色彩細節。檔案更小,是因為部分原始資料被永久地去掉了。你無法從一個 JPEG 還原原始的像素值;你得到的是一個非常好的近似。
PNG 使用無損壓縮。它把每個像素值完全按記錄的樣子儲存,然後套用一個數學演算法來尋找並消除冗餘,而不丟棄任何資訊。解壓一個 PNG,你會逐位元得到完全相同的原始像素資料。
大小的差別不是 PNG 的缺陷。它是準確的代價。當檔案大小是優先項時,JPEG 勝出。當需要精確的像素準確度時,PNG 勝出。在兩者之間選擇,取決於影像包含什麼以及你需要用它做什麼。
PNG 還是 JPG:按內容選擇
大小跟隨內容。把格式與影像實際是什麼相符合:
| 影像內容 | 最佳格式 | 原因 |
|---|---|---|
| 照片 | JPG 或 WebP | 小 5–10 倍且無可見損失 |
| 螢幕截圖、文字、介面 | PNG | 邊緣銳利;這裡往往比 JPG 小 |
| 標誌、圖示、透明 | PNG 或 WebP | Alpha 透明;JPG 會把它填成白色 |
| 平塗色圖形、圖表 | PNG | 無損,且很好地壓縮重複 |
| 你經常重新編輯的檔案 | PNG | 反覆儲存也無品質損失 |
為什麼無損壓縮對照片仍產生大檔案
PNG 使用 DEFLATE 壓縮——與 ZIP 檔案內部相同的演算法。DEFLATE 在資料中尋找重複的模式並緊湊地表示它們。當模式存在時它運作得很好:圖表中一大片純白、標誌中重複的紋理,或截圖中一連串相同的像素。
照片幾乎沒有這樣的模式。一張森林、人臉或街道照片中的每個像素都與其鄰居略有不同。像素值在各個方向上連續變化。DEFLATE 找不到多少可壓縮的東西,輸出檔案幾乎和原始像素資料一樣大。
JPEG 恰好在相反的條件下運作。它套用一種把影像分解為頻率分量的變換,並積極丟棄高頻色彩細節——正是照片中充滿的那種複雜變化。結果是在照片類內容上以最小的可見品質損失實現劇烈的大小縮減。
螢幕截圖和圖表:PNG 在大小上勝出之處
對於非照片內容,比較反了過來。一張網頁截圖有大片平塗色、銳利的文字邊緣和硬邊的介面元素。DEFLATE 非常高效地壓縮這類內容,因為有大量重複。
把同一張截圖存為 JPEG 會引入可見的失真。JPEG 的壓縮演算法會模糊銳利邊緣,並在高對比度過渡周圍引入塊狀雜訊——正是文字和介面元素所在之處。要讓 JPEG 看起來乾淨,需要高到讓檔案最終比 PNG 還大的品質設定。
經驗法則:截圖、圖表、標誌和文字用 PNG。照片用 JPEG。
透明度:PNG 能做而 JPEG 不能的事
PNG 支援一個儲存逐像素透明度的 Alpha 通道。這就是為什麼標誌和圖示幾乎總是 PNG:透明區域讓任何頁面的背景透出來。JPEG 完全不支援透明。把帶透明的 PNG 轉換為 JPEG 會用單一顏色——預設是白色——填充透明區域,這是一個功能性的改變,而不僅是品質上的取捨。
如果一張影像需要透明背景,無論大小,PNG 都是正確的格式。WebP 是一個支援透明的替代品,對於內容多樣的影像,它往往產生比 PNG 更小的檔案。
JPEG 的重新儲存問題
JPEG 每次檔案被重新編碼時都會丟失資訊。打開一個 JPEG,編輯它,再次存為 JPEG——第一次儲存的壓縮失真會在第一輪壓縮之上再被壓縮一次。這樣做幾次,可見的劣化就會出現:塊狀斑塊、色帶、模糊的邊緣。PNG 沒有這個問題。一個 PNG 可以打開和儲存任意多次,像素資料都不會改變。
認真編輯的標準工作流程:把工作檔案保留為 PNG 或原始 raw 格式,然後僅在最後一步為網頁交付匯出為 JPEG。這在每次編輯中都保持品質,且只產生一次有損壓縮。
實際中典型的大小差異
- 智慧型手機照片存為 PNG: 15–25 MB。同一張照片存為高品質 JPEG:2–5 MB。以標準網頁品質:低於 1 MB。
- 螢幕截圖存為 PNG: 200–500 KB。同一張截圖以相當的視覺品質存為 JPEG:因失真需要高品質設定,往往比 PNG 還大。
- 帶透明的標誌存為 PNG: 30–100 KB。存為帶白色背景填充的 JPEG:大小相近,但失去透明功能。
何時把 PNG 轉換為 JPEG
如果你有 PNG 照片——也許是從相機應用程式或編輯軟體匯出的——而它們不需要透明,那麼為網頁發布轉換為 JPEG 幾乎總是正確的決定。品質設定 80–85 通常會產生一個在正常檢視尺寸下與原始 PNG 無法區分、但小三到五倍的檔案。
PhotoTools 在你的瀏覽器中把 PNG 轉換為 JPG,不向伺服器上傳任何東西。調整品質滑桿,比較預覽,並下載結果。對大多數網頁照片,JPEG 版本在影像實際顯示的尺寸下會明顯更小,且沒有可見的品質損失。