透過色・アルファチャンネル付き PNG の減色・最適化・検証
pngquant で減色
pngquant 16 src.png
上記コマンドで、src.png を 16 色に減色してくれる。
自動で最適な 16 色パレットが生成され、フロイド-スタインバーグ・ディザリングが施されるので、元画像との見栄えの変化が小さい画像が新たに作成される。
IrfanView の短所をカバーできる
また、透過色・アルファチャンネルは保持される。これは、現在の IrfanView の PNG 書き出し機能にはない素晴らしい特徴だ。
オプションがいくつかある
オプションは以下のように指定する。
pngquant --nofs 16 src.png
--nofs
オプションは、フロイド-スタインバーグ・ディザリングを無効にする。すなわち、ポスタリゼーションを施したような画像となる。
--ext -2.png
を指定すると、新たに作成される画像のファイル名を src-2.png
にすることができる。
optipng でファイルサイズを小さく最適化
optipng --strip all src.png
上記コマンドには、--strip all
オプションが付いている。これによって、メタデータを削除する。画像の品質には影響せず、PNG 最適化が行える。
TweakPNG で透過色・アルファチャンネルの保持を検証
PNG 画像のバイナリは、チャンクという単位のビット列が集まってできている。それぞれのチャンクには名前があり、IHDR や PLTE などと名付けらている。TweakPNG で PNG 画像を開くと、どのようなチャンクがどのような順序で並んでいるかを確認することができる。
チャンクの 1 つに tRNS と名付けられているものがある。これは、透過色・アルファチャンネルの情報が詰まったチャンクであり、このチャンクが含まれている場合、その PNG 画像は部分的に透けているはずだ。(ただし、tRNS が含まれていなくとも透けていることはある)
pngquant による減色によって透過色・アルファチャンネルが本当に失われていないかを検証する手段のひとつとして TweakPNG で tRNS チャンクの有無を確認する、というやり方があるのだ。