0番染色体

科学は全世界を照らす光である

【Mac】透過しにくいPNG

PNGといえば,JPEGと違い可逆圧縮で,GIFよりも圧縮率が高くライセンスの心配もないために現在では広く使われている画像形式ですが,その特長の一つに「透過設定が使える」というのがあります.

また,Mac OS標準のプレビュー.appは「(PNG画像で)範囲選択をしてDeleteキーを押す」だけで簡単に"透過PNG"を作成することができ,大変便利です.

しかし,実はすべてのPNG画像で簡単に透明色を利用できると思っていると痛い目に遭うことがあります.

透過PNGを作ったつもりが……

下の画像はMac OS標準のプレビュー.appでランドルト環(視力検査で使うアレです)の画像を開いているところです.見たところ,"普通のPNG画像"以外の何ものでもありません.

ランドルト環(白背景)

ご覧の通り,この画像は白背景となっているので,プレビュー.appのマークアップツールを使って背景を"透明色"に変更してみます.

ランドルト環(透明背景もどき)

うまくいきました.めでたしめでたし.

いや,本当にそうでしょうか? 一旦この画像を保存して再度開いてみましょう.

ランドルト環(黒背景)

黒背景になってしまいました.これは困ります.透明背景にしたはずが,うまくいっていなかったようです.

それもそのはず,実はここで使用しているLandolt-ring.pngというPNGファイルは,最初から(プレビュー.appでは)"透過PNGにできないPNG"だったのです.

しかし,最初に述べたようにプレビュー.appでは"普通のPNG"(透過PNGにできるPNG)と見かけ上の違いは一切ありませんでした.では,どうすれば"透過PNGにできないPNG"と"普通のPNG"を見分けることができるのでしょうか.また,どうすればこの"透過PNGにできないPNG"を"普通のPNG"に変換することができるのでしょう.

以下では,GIMPというフリーの高機能画像編集ソフトを用いて,この問題を解決する方法を説明します.

グレースケールPNG

最初の画像を,今度はGIMPで開いてみます.

GIMPの画面

何やらタイトルバーに色々書いてありますが,ここに一つ重要な情報が含まれています.拡大してみましょう.

グレースケールを拡大

「グレースケール」と書いてあります.そうです,この画像はPNGはPNGでも"グレースケールPNG"と呼ばれるもので,白と黒の二色(およびこれらを任意比率で混合して作成できる灰色)のみを扱うことができるPNG画像だったのです *1

これを,プレビュー.appで透過PNGにできるようにするためには,GIMPのメニューバーから 画像>モード>RGB を選択し *2 ,上書き保存します.

これで,問題のPNGもプレビュー.appで透過PNGにすることが可能な"普通のPNG"にすることができました.めでたしめでたし.

*1:厳密には,グレースケールPNGでも透明色を利用できるようです.ただし,プレビュー.appのような簡易的な画像編集ソフトではそのような操作は難しいようなので,本記事では"できない"ということにしておきます.

*2:実は「インデックス」を選択しても透過PNGにできるようになります.場合によっては,その方がファイルサイズを小さくできるかもしれません.