透過色・アルファチャンネル付き PNG の減色・最適化・検証

pngquant で減色

pngquant はコマンドラインツールだ。

pngquant 16 src.png

上記コマンドで、src.png を 16 色に減色してくれる。

自動で最適な 16 色パレットが生成され、フロイド-スタインバーグ・ディザリングが施されるので、元画像との見栄えの変化が小さい画像が新たに作成される。

IrfanView の短所をカバーできる

また、透過色・アルファチャンネルは保持される。これは、現在の IrfanViewPNG 書き出し機能にはない素晴らしい特徴だ。

オプションがいくつかある

オプションは以下のように指定する。

pngquant --nofs 16 src.png

--nofs オプションは、フロイド-スタインバーグ・ディザリングを無効にする。すなわち、ポスタリゼーションを施したような画像となる。

--ext -2.png を指定すると、新たに作成される画像のファイル名を src-2.png にすることができる。

optipng でファイルサイズを小さく最適化

optipng もコマンドラインツールだ。

optipng --strip all src.png

上記コマンドには、--strip all オプションが付いている。これによって、メタデータを削除する。画像の品質には影響せず、PNG 最適化が行える。

TweakPNG で透過色・アルファチャンネルの保持を検証

TweakPNG は GUI ツールだ。

PNG 画像のバイナリは、チャンクという単位のビット列が集まってできている。それぞれのチャンクには名前があり、IHDR や PLTE などと名付けらている。TweakPNG で PNG 画像を開くと、どのようなチャンクがどのような順序で並んでいるかを確認することができる。

チャンクの 1 つに tRNS と名付けられているものがある。これは、透過色・アルファチャンネルの情報が詰まったチャンクであり、このチャンクが含まれている場合、その PNG 画像は部分的に透けているはずだ。(ただし、tRNS が含まれていなくとも透けていることはある)

pngquant による減色によって透過色・アルファチャンネルが本当に失われていないかを検証する手段のひとつとして TweakPNG で tRNS チャンクの有無を確認する、というやり方があるのだ。