Portable Network Graphics
PNGのイメージデータはzlibにより圧縮されるが、画像の特徴を利用して圧縮の効率を良くするために、フィルタで事前に処理を行えるようになっている。(展開時には、逆のフィルタがかかる)
例えば、ピクセルの値が次のように並んでいたとする。
このデータには冗長な値が無く、このままDeflate圧縮を行っても効果は得られない。しかし例えば「左の値との差」をとると、データは以下のようになる。
この状態で圧縮すれば、最初の状態よりも高い効果が得られる。上記は極端な例であるが、このように事前に簡単な演算を行うことは、データによっては圧縮率の改善に役立つ。
PNGでは5種類のフィルタを定義している。
圧縮・非圧縮、IETF言語タグを伴うことができる。
pHYs - ピクセルの物理サイズ、またはイメージのアスペクト比を指定する。
sBIT - 元データの有効なビット数を示す。
sPLT - イメージが使用する色を全てカバーできない時に、代替となるパレットを提示する。
sRGB - 標準的なsRGBの色空間が使われていることを示す。
tEXt - ISO 8859-1形式のテキストを保持する。キーワードと対になるチャンクを複数持つことができる。テキストの圧縮は行われない。
tIME - イメージの最終更新日時を保持する。
tRNS - 透過色情報を保持する。ピクセル単位のアルファ値指定が必要ない場合に使用する。インデックスカラーのイメージについてはインデックスに結びつけるアルファ値、トゥルーカラーやグレースケールのイメージについては、完全に透過とみなす色を指定する。
zTXt - tEXtチャンクと同じ制限の圧縮テキスト。