Portable Network Graphics(PNG)形式は、画像データを一連の独立した「チャンク」に整理します。各チャンクは、4バイトの長さ、4バイトの名前、実際のデータ、およびエラー検出のためのCyclic Redundancy Check(CRC)という特定の構造に従っています。これらのチャンクの命名規則は、デコーダーがそれらをどのように処理するかを決定します。例えば、大文字は画像を正しく表示するために必要な「Critical(重要)」チャンクを意味し、小文字は「Ancillary(付随)」チャンクを表します。この区別により、「IHDR」(Image Header)のような幅、高さ、ビット深度を定義するために不可欠なメタデータがある一方で、「gAMA」(Gamma)や「pHYs」(Physical Dimensions)のような他の情報は、基本的なレンダリングにおいてはオプションと見なされます。
これらのチャンクの命名規則は、デコーダーがそれらをどのように処理するかを決定します。例えば、大文字は画像を正しく表示するために必要な「Critical」チャンクを意味し、小文字は「Ancillary」チャンクを表します。
デコードプロセスの核心となるのは、実際の圧縮画像データを含む「IDAT」チャンクです。ストリーミングエンコーダーは事前に総データ長を知ることができない場合があるため、PNGファイルにはデコーダーによって単一のストリームに連結される複数のIDATチャンクが含まれることがあります。このストリームは、標準的なzlibアルゴリズムを使用して解凍されます。しかし、解凍だけでは表示可能な画像は生成されません。得られたデータは歪んだり崩れたりして見えるのは、画像の各行に「フィルター」バイトが含まれているためです。これらのフィルター(「Average」、「Up」、「Paeth」など)は、ピクセルとその隣接ピクセルの関係を記述することで、zlibによるデータ圧縮をより容易にするように設計されています。最終的な画像を再構成するために、デコーダーはこれらの数学的操作を1行ずつ元に戻す「デフィルター」処理を行う必要があります。
標準的なデコードを超えて、PNG形式は「インターレーシング」をサポートしており、これにより画像は段階的に読み込まれることができます。これは、画像を「Adam7」として知られる7つの重複しない領域に分割することで実現されます。これらのパスはファイル内に順次保存され、ビューアはまず低解像度のバージョンを表示し、より多くのパスが読み込まれるにつれて徐々に詳細が加わっていく様子を確認できます。この技術は、初期の読み込み段階では水平方向の詳細が優先されることが多いため、人間の視覚的知覚にとって特に有用です。この形式は堅牢ですが、フィルター計算における小さなエラー(「Average」フィルターにおける整数オーバーフローの誤った処理など)であっても、ピクセルの数学的な再構成に失敗するため、重大な視覚的アーティファクトが発生することがあります。
これは、画像をAdam7として知られる7つの重複しない領域に分割することで実現されます。これらのパスはファイル内に順次保存され、ビューアはまず低解像度のバージョンを表示し、より多くのパスが読み込まれるにつれて徐々に詳細が加わっていく様子を確認できます。

この形式は堅牢ですが、フィルター計算における小さなエラー(「Average」フィルターにおける整数オーバーフローの誤った処理など)であっても、ピクセルの数学的な再構成に失敗するため、重大な視覚的アーティファクトが発生することがあります。