PNG 圖片 (.png)
W3C 標準可攜式網路圖形(Portable Network Graphics,簡稱 PNG)是一種不受專利限制的點陣圖檔案格式,支援無損資料壓縮、索引色彩與可變 alpha 通道透明度。
將 PNG 轉換為 JPG
免費的瀏覽器端 PNG 轉 JPG 轉換器。在您的裝置上即時轉換檔案。
線上壓縮 PNG
具隱私保障 - 檔案絕不會離開您的裝置
檢查與中繼資料
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 PNG 檔案:
位元組層級標頭簽章(檔案簽章)
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 PNG 檔案:
十六進位簽章(偏移量 0):
89 50 4E 47 0D 0A 1A 0AASCII 表示法: .PNG....
標準化: W3C 建議標準(1996) / ISO/IEC 15948:2004
技術規格
| 容器架構 | 基於區塊的二進位容器,每個區塊都有 4 位元組的 CRC32 驗證 |
| 壓縮 | Deflate(LZ77 + 霍夫曼編碼),具有 5 種預測掃描線濾鏡(None、Sub、Up、Average、Paeth) |
| 位元組序 | 區塊長度、尺寸與 CRC 採用大端序(網路位元組順序) |
| 色彩空間 | sRGB, Display P3, 索引調色盤(1-8 位元), 灰階, 全彩(24/48 位元) |
| 色版與結構 | RGB + Alpha(每個色彩通道最高 16 位元 / 64 位元 RGBA) |
| 最大尺寸 | 2,147,483,647 x 2,147,483,647 像素(4 位元組無號整數) |
| 透明度 | 完整的 8 位元 / 16 位元可變 alpha 透明度通道 |
| 串流與漸進式 | Adam7 7 道交錯演算法,可實現漸進式 2D 掃描線算繪 |
技術比較矩陣:PNG 對比競爭格式
| 技術屬性 | PNG (目前) | WebP | AVIF | JPEG |
|---|---|---|---|---|
| 壓縮類型 | 嚴格無損(Deflate + 2D 預測濾鏡) | 有損(VP8)與無損(VP8L) | 有損(AV1 intra)與無損 | 嚴格有損(離散餘弦轉換) |
| Alpha 透明度 | 完整的 8 位元 / 16 位元可變 alpha 通道 | 支援 8 位元 alpha 通道 | 支援 8 位元 / 10 位元 / 12 位元 alpha 通道 | 不支援透明度通道 |
| 檔案大小(相片) | 通常比相片的有損格式大;相對大小隨圖片與編碼器而異 | 可能比 JPEG 小;結果隨圖片與編碼器而異 | 可能比 JPEG 小;結果隨圖片與編碼器而異 | 中等基準 |
| 檔案大小(圖形 / UI) | 對於截圖、線稿和文字極為精簡 | 絕佳的無損模式 | 良好,但編碼速度較慢 | 差(在銳利邊緣產生振鈴偽影) |
| 瀏覽器相容性 | 主要瀏覽器支援;可用性取決於瀏覽器與版本 | 許多目前瀏覽器廣泛支援;涵蓋範圍隨版本與平台而異 | 許多目前瀏覽器支援;涵蓋範圍隨版本與平台而異 | 廣泛支援;可用性隨產品與版本而異 |
常見損壞模式與十六進位修復指南
圖片檢視器顯示「Fatal error: Not a valid PNG file」或無法開啟。
根本原因: 前 8 個位元組遭到 ASCII 傳輸模式修改(將 0x0D 0x0A 改寫為 0x0A 或 0x0D 0x0D 0x0A)。
修復: 在十六進位編輯器中開啟檔案,並確認前 8 個位元組符合「89 50 4E 47 0D 0A 1A 0A」。還原這 8 個標頭位元組通常能復原圖片。
pngcheck 回報「CRC error in chunk IDAT」,或者圖片載入不完全且底部掃描線損壞。
根本原因: 壓縮 zlib 資料流中的位元損毀,或是 IDAT 區塊中的 CRC32 檢查碼無效。
修復: 使用 pngcheck -f 或 Deflate 資料流復原工具重新計算有效的 CRC32 值,或解壓縮損毀區塊之前未受損的掃描線。
圖片在桌面檢視器中顯示正常,但在 iOS 應用程式中失敗。
根本原因: iOS 預期蘋果專有的 CgBI 位元組對調格式,或非標準的色彩空間區塊。
修復: 使用「pngcrush -revert-iphone-optimizations」正規化圖片,以還原標準的 W3C RGBA 順序。
安全性分析與解析器攻擊向量
PNG 受到許多作業系統與應用程式支援。安全風險包含解碼器記憶體耗盡與惡意輔助區塊。
已知攻擊向量
- 過大的 tEXt 與 zTXt 中繼資料區塊可能在未使用沙箱的解碼器中觸發記憶體不足(Out-Of-Memory,OOM)阻斷服務。
- 舊版 libpng 發行版本中的堆積緩衝區溢位弱點(例如 png_set_PLTE 的 CVE-2015-8126)。
- 像素洪水解碼攻擊,宣告檔案大小很小但尺寸極大的圖片(例如 100,000 x 100,000 像素)。
- 隱寫術資料外洩,將加密酬載隱藏在輔助私密區塊中(例如 eXIf 或自訂區塊類型)。
防禦最佳實務: 在記憶體中配置像素緩衝區之前,務必驗證圖片尺寸。使用者上傳圖片時,請使用記憶體安全的清理工具移除不必要的輔助區塊(eXIf、tEXt)。
歷史起源與里程碑
主要優勢與優點
- PNG 使用無損壓縮,因此編碼未變更的圖片不會引入壓縮損失;編輯或色彩轉換仍可能變更像素值。
- 平滑的 8 位元 alpha 透明度可在複雜背景上實現乾淨的混色效果。
- 伽瑪校正與色度區塊確保在各種顯示器上都能有一致的算繪效果。
技術限制與缺點
- 與 WebP 或 AVIF 等現代有損格式相比,相片內容的檔案大小明顯較大。
- 標準 PNG 不支援原生多影格動畫(需要 APNG 擴充功能)。
- 高位元深度(每個色彩通道 16 位元)會建立巨大的未壓縮記憶體內解碼緩衝區。
有趣的技術冷知識
- 這 8 位元組的檔案簽章(magic bytes)專門設計用來偵測 FTP 傳輸造成的 CR/LF 行結尾損毀。
- PNG 的非官方遞迴縮寫是「PNG's Not GIF」。
- 蘋果在 iOS 應用程式 PNG 中使用了專有的 CgBI 區塊,將 RGBA 反轉為 BGRA 以進行直接 GPU 算繪。
常見技術問題
為什麼 PNG 檔案在圖片編輯器中儲存時,大小有時候會增加?
不同的軟體套件會使用不同的 Deflate 壓縮層級與預測掃描線濾鏡啟發式演算法。像 Photoshop 這類的程式經常會附加未壓縮的色彩描述檔、XMP 中繼資料區塊以及未最佳化的 IDAT 區塊大小。專用工具(例如 File2File.app 壓縮工具)會重新評估全部 5 種掃描線濾鏡以達到最小的檔案大小。
PNG-8 與 PNG-24 有什麼區別?
PNG-8 使用最多 256 種顏色的索引色盤(類似 GIF),能產生非常小的檔案,適合簡單的圖示。PNG-24 支援約 1,670 萬種顏色(16.7 million,每個色彩通道 8 位元的全彩),而 PNG-32 則增加了 8 位元的 alpha 透明度通道。
為什麼 PNG 有 5 種預測掃描線濾鏡?
Deflate 會壓縮重複的位元組模式。由於相片或漸層的像素值會逐漸變化,PNG 會透過計算相鄰像素之間的差異,對每條掃描線套用濾鏡(None、Sub、Up、Average、Paeth)。這會將漸層資料轉換為接近零的位元組字串,大幅提升 Deflate 的壓縮效果。
PNG 是否支援用於商業印刷的 CMYK 色彩空間?
否。官方的 W3C PNG 規格刻意將色彩類型限制為灰階(Grayscale)、索引(Indexed)和 RGB。需要 CMYK 的專業印刷工作流程必須使用 TIFF 或 PDF 容器。
相關的 PNG 轉換對
將 PNG 點陣圖轉換為 JPEG 格式能透過有損壓縮減少檔案大小,讓圖片在網站上載入更快並節省儲存空間。
將有損的 JPEG 點陣圖轉換為無損的 PNG 點陣圖,可防止進一步的世代損失並增加對 Alpha 色頻透明度的支援。
將 PNG 圖片轉換為 WebP 可以減少檔案大小,同時保留透明度;結果取決於使用的是有損或無損編碼,以及圖片內容。
將 WebP 轉為 PNG 會為支援 PNG 的軟體建立一張靜態圖片;它無法保留 WebP 動畫,且無法復原有損來源的細節。
將 HEIC 轉換為 PNG 可將有損 HEVC 壓縮的相片轉化為廣泛支援的無損圖形檔案。
將 SVG 向量檔案轉換為 PNG 點陣圖,可將可縮放的程式碼圖形轉換為固定像素網格,以提升廣泛的應用程式相容性。
將點陣 PNG 圖片封裝在 SVG XML 向量容器內,以實現響應式網頁縮放與相容向量的版面整合。
直接在您的瀏覽器中,將 Adobe Photoshop PSD 圖形轉換為具備完整 Alpha 色版透明度的無損 PNG 圖片,且完全不會傳輸至伺服器。