ふだん何気なく利用している画像ファイルですが、カメラで撮影した画像(写真)とスクリーンショット(キャプチャ画像)でなぜフォーマットが異なるか、理由を知っていますか? 今回は、macOSでスクリーンショットなどに利用される「PNGファイル」にスポットライトを当てます。

PNGの得意/不得意を知ろう

「PNG」という画像フォーマットをご存知ですか? Finderの表示モードをアイコンにしていると気付きにくいものですが、スクリーンショットはPNGで保存されますし、「プレビュー」や「写真」など画像を扱うアプリの多くがPNGに対応しています。iOSでも同様ですから、もっとも扱う機会が多い画像フォーマットのひとつであることは確かでしょう。

PNG(Portable Network Graphics)はビットマップ画像を対象としたファイルフォーマットで、データ圧縮に伴う画質劣化が生じない可逆圧縮を採用しています。色数や画像サイズ/ピクセル数を変更しないかぎり、何度保存を繰り返しても画質が劣化することはありません。

しかし、PNGはオールマイティな画像フォーマットではありません。得意・不得意があるため、用途に応じて他のフォーマットと使い分けるべきです。

PNGに向いている用途は、コンピュータの画面や線/面情報からなるイラストの保存です。PNGは保存時にオリジナル画像と完全に一致するよう圧縮を行いますから、面を同じ色、つまり同じデータが連続する画像はファイルサイズを大幅に小さくできるのです(ランレングス法:同じパターンが繰り返される場合にその値と個数で符合化する)。しかも可逆圧縮なので、アプリで表示するなど復元処理を実行すれば完全なオリジナルを再現できます。

背景を透明にできることも、PNGの特長です。特許問題で揺れていたGIFに代わるフォーマットとして開発された経緯もあり、最大色数を256色で保存したときの特性はGIFとほぼ同じです(グラデーションを含む画像はGIFよりサイズが小さくなる傾向があります)。多くのWEBブラウザがサポートしていることから、WEBサイトのメニューバーやアイコンの画像フォーマットとしても活用されています。

一方、風景写真のように不連続な情報が大半を占める画像の扱いには向いていません。もちろん扱うこと自体は可能ですが、JPEGと比べるとファイルサイズは格段に大きくなります。近ごろのデジタルカメラは、700万、800万といった画素数で撮ることが一般的ですから、JPEGのように圧縮時に情報の一部を捨て去るフォーマットを利用しても、細部を拡大表示しないかぎりは画質の劣化に気付かないことでしょう。

macOSでは、スクリーンショットの画像フォーマットやGUIのボタン類などに「PNG」が採用されています

背景色を透明するなど、PNGでは画像に透過色を持たせることができます

PNGとGIF、JPEGの比較
ファイルフォーマット PNG GIF JPEG
読みかた ピン(グ) ジフ ジェイペグ
拡張子 .png .gif .jpg/.jpeg
最大色数 1670万(フルカラー) 256色 1670万(フルカラー)
データ圧縮 可逆圧縮 可逆圧縮 非可逆圧縮
透過処理 ×
主な用途 イラスト(色数の多いもの)、背景が透明な画像 イラスト(色数の少ないもの)、背景が透明な画像 写真

PNGのファイルサイズを小さくする

PNGで扱える色数はつねに同じではなく、フルカラー(24ビット/48ビットのRGB)、グレースケール、インデックスカラー(8ビットのRGB)などを選択できます。透明度(アルファチャンネル)や背景色を持つことができ、RGB各色のビット深度も調整できるので、実際にはいろいろなバリエーションがあります。たとえば、iOSで撮影したスクリーンショットはアルファチャンネルあり/16ビットRGBで、macOSはアルファチャンネルあり/8ビットRGBです。

色数に着目すると、PNGのファイルサイズを小さくできます。たとえばスクリーンショットの場合、使用されている色数が少なく8ビットでじゅうぶん表現可能な状況があるにもかかわらず、iOSでは一律16ビットRGBで保存されていることになります。その色深度を8ビットに下げれば、画質を保ちつつファイルサイズを大幅に減らすことができます(色数を減らすので非可逆圧縮とはいえなくなります)。

macOSにそのようなアプリはありませんが、オンラインソフトの「ImageAlpha」を使うと、かんたんに16/24ビットカラーのPNGを8ビットカラーに変換できます。iPhone 7で撮影したスクリーンショット(背景が単色のWEBページ)を例にすると、534KB(キロバイト)から94KBへと大幅に軽量化することができました。

なお、ImageAlphaはアルファチャンネルに対応しているため、PNGの透過情報を損なうことなく色数を減らすことができます。変換後に色ムラが気になる場合は、「Ditherd」オプションにチェックを入れてから保存しましょう。軽量化の効果は若干低下しますが、WEBページのような素材では画質差はほぼ気にならないレベルです。

オンラインソフト「ImageAlpha」を使うと、PNGで使用する色数を減らすことができます

WEBページのように背景が単色の素材を8ビットカラーに変換すると、それほど画質を下げずにファイルサイズを大幅圧縮できます(左が減色前/534KB、右が減色後/102KB)