PNGを1バイトずつ解読する:チャンクからAdam7まで

Each step of decoding a PNG (2022)

PNGファイルのデコード手順を、実際のバイト列を追いながら解説。チャンク構造、IDATの連結とzlib展開、行ごとのフィルタ解除、そしてAdam7インターレースによる7段階の画像読み込みまでを順にたどる。圧縮データがノイズに見える理由や、フィルタの種類別使用頻度、Averageフィルタのバグで画像が崩れる例も紹介。

圧縮されたデータは、それが符号化している低エントロピーのデータよりも高エントロピーに見えるはずだ。

この日のほかの記事

2026-10-18