PNG 圖片 (.png)

W3C 標準

可攜式網路圖形(Portable Network Graphics,簡稱 PNG)是一種不受專利限制的點陣圖檔案格式,支援無損資料壓縮、索引色彩與可變 alpha 通道透明度。

將 PNG 轉換為 JPG

免費的瀏覽器端 PNG 轉 JPG 轉換器。在您的裝置上即時轉換檔案。

線上壓縮 PNG

具隱私保障 - 檔案絕不會離開您的裝置

檢查與中繼資料

作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 PNG 檔案:

在這裡選擇或拖放檔案

私密 - 檔案絕不會離開您的裝置

或貼上 Ctrl+V
零網路傳輸隱私保證: 0 位元組上傳至外部伺服器。所有處理皆在本機瀏覽器沙箱中進行。

位元組層級標頭簽章(檔案簽章)

作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 PNG 檔案:

十六進位簽章(偏移量 0):

89 50 4E 47 0D 0A 1A 0A

ASCII 表示法: .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 (目前)WebPAVIFJPEG
壓縮類型嚴格無損(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)。

歷史起源與里程碑

2004在國際上標準化為 ISO/IEC 15948。
1996PNG 1.0 以 W3C 建議標準的形式發布。
1995在 Unisys 強制執行 LZW 專利費之後,於 Usenet comp.graphics 上建立,作為 GIF 的開放式替代方案。

主要優勢與優點

  • 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 容器。