Portable Network Graphics
[1])はコンピュータでビットマップ画像を扱うファイルフォーマットである。圧縮アルゴリズムとしてDeflateを採用している、圧縮による画質の劣化のない可逆圧縮の画像ファイルフォーマットである。 (ポータブル・ネットワーク・グラフィックス、PNG、ピング、ピン1996年に登場し、可逆圧縮の画像フォーマットとして既に普及していたGIFの後継フォーマットとなることを目指し、ネットワーク経由での使用を想定した機能や透過処理など、多くの機能をサポートした。ウェブブラウザやグラフィックソフトでのサポートも進み、インターネットを中心に普及した。 「PNG」は「ピング」や「ピン」と多く読まれる。 概説画像の色モデルとして、最大16ビットのグレースケール、24ビットと 48ビットのRGB、または8ビットまでのインデックスカラーモード(パレットカラー) を利用することができる[2][3][4]。透過についてはクロマキーによる透過指定、および8ビットから16ビットのアルファチャンネルをサポートする[5]。また、画像に付属するテキストなどのメタデータやガンマ値なども画像ごとに記録できる[1]。 GIFと異なり、PNGにはアニメーション機能はない[2]。ただし、PNGはチャンク(データのブロック)で自由に拡張できるようになっていて、1ファイルに複数の画像を含めることができる。これを使ってアニメーション機能を追加した MNG と APNG が別のフォーマットとして開発されている。他の拡張として、立体視用にステレオPNG (PNS) フォーマット[6]がある。 歴史PNGが開発された動機は、1994年末に、GIFに使われていた圧縮アルゴリズムLZWについて米ユニシスが特許を保有しているとし、GIFを使ったソフトウェアに特許権を行使すると発表したことによる[7]。実際、PNGの頭文字は非公式に「PNG is not gif」という意味が込められている[8][9][10](再帰的頭字語)。また、当時256色以上表示可能なコンピュータが主流になってきたため、GIFフォーマットにある256色までという制限を解消する必要もあった。1999年、ユニシスが非商用ソフトについても特許使用料を請求することを決める[11]と、PNGはさらに注目を集めるようになった。
技術詳細詳しくは、仕様書[spec 1][spec 2][spec 3]を参照。 ファイルヘッダPNG ファイルはヘッダに 8 バイトのシグネチャ(マジックナンバー)を持つ[14]。16進数の値は「89 50 4E 47 0D 0A 1A 0A」である[14](制御文字で表すと
ファイルヘッダの後にはIHDRチャンクが必ず来て[15]、IHDRチャンクのサイズは13バイト固定なため、シグネチャの次の8バイトも00 00 00 0D 49 48 44 52で固定されている。 チャンクファイルヘッダに続いて、チャンクと呼ばれる複数のデータブロックが続く。各チャンクは画像についての様々な情報を保持するもので、必須チャンクと補助チャンクに分けられる。補助チャンクは任意的なもので、処理プログラム側によっては必ずしも処理されない。このチャンク構造により、PNGフォーマットは拡張性と前方互換性を両立する。 チャンクの構造は、 の順番で配置される[16]。 チャンクの種類は、大文字と小文字が区別されるアルファベット4文字で表される[16]。
必須チャンクPNGファイルの読み込みと表示に必要なチャンクで、デコーダが適切に処理する必要がある[16]。
PLTEチャンクはカラータイプ 3 (インデックスカラー)を使用するときに必須となる。カラータイプ 2 と 6 (トゥルーカラー及び、アルファ情報付きトゥルーカラー)の場合は任意、さらにカラータイプ 0 と 4(グレースケール及び、アルファ情報付きグレースケール)の場合は存在してはいけない。 補助チャンクイメージについての付加情報を保持するための任意チャンク。
フィルタ処理PNGのイメージデータはzlibにより圧縮されるが、画像の特徴を利用して圧縮の効率を良くするために、フィルタで事前に処理を行えるようになっている[17]。(展開時には、逆のフィルタがかかる) 例えば、ピクセルの値が次のように並んでいたとする。 100,101,102,103,104,105 このデータには冗長な値が無く、このままDeflate圧縮を行っても効果は得られない。しかし例えば「左の値との差」をとると、データは以下のようになる。 100,1,1,1,1,1 この状態で圧縮すれば、最初の状態よりも高い効果が得られる。上記は極端な例であるが、このように事前に簡単な演算を行うことは、データによっては圧縮率の改善に役立つ。 PNGでは5種類のフィルタを定義している。
このフィルタは横一ライン毎に変更できる。どのフィルタをどこに使うかは使用する圧縮プログラムが選択できるため、プログラムによって同じ画像でも異なるサイズになりうる。 圧縮圧縮アルゴリズムはDeflate (RFC 1951) を使用し、フォーマットはzlib形式 (RFC 1950) と定められている[18]。DeflateのアルゴリズムそのものはPNGの仕様書には書かれていない。圧縮後のデータは、そのまま IDAT チャンクに格納される。 なおPNGはDeflate以外の圧縮形式もサポート出来るように設計されており、IHDRチャンクやiTXtチャンクには、使用する圧縮形式を明示するCompression methodフィールドがある。ただしVer1.2時点ではCompression methodフィールドで使える値はDeflateを示す一種類だけである。 開発者向けのツール→詳細は「libpng」を参照
PNGを処理するための開発者向けライブラリとしてlibpngがある。これはPNG公式のライブラリであり、最も広く利用されている。C言語で開発されており、多くのプラットフォームで動作する。ライセンスはGPLよりも制限が緩やかである。 他のフォーマットとの比較GIF との比較GIF の代替物として開発された経緯があるため、GIFと比較されることが多い。主な差異は以下の通り。
JPEGとの比較JPEGは、主に写真的なイメージデータを非可逆圧縮することでPNGよりも小さなファイルサイズに収めることができる。そのため、高画質に設定したJPEGと比較すると、ファイルサイズはJPEGの数倍(大抵は5 - 10倍程度)になる。 PNGは、テキストや線画など色の境界がはっきりしたイメージに適している。線画と写真が混在している場合では、目的に応じて濃淡が目立たない(シャープな)部分を重視する場合はPNG、保存時のファイルサイズを重視する場合はJPEGを選ぶことができる。 JPEGは、非可逆圧縮方式でありジェネレーションロスが生じるため、編集中の一時データの保存には向かない。JPEGで保存をする段階で画像は劣化し、それを繰り返すたびに更に画像は劣化していく。 TIFFとの比較PNGとTIFFは、画像を可逆圧縮または無圧縮により劣化なしで画像の保存が可能という点は共通している。 同じ画像を保存する際、ファイルサイズでは一般的にPNGに利点があるとされる[要出典]。 ブラウザの対応前述の特許権問題によりGIF排斥運動が起こったが、当初はPNGの普及はなかなか進まなかった。それは主に以下の理由からである。
特に、2000年代に絶大なシェアを誇ったInternet Explorerはバージョン6までアルファチャンネルを持つPNG画像を正しく描画できなかった。2006年11月にリリースされたバージョン7で、正確に描画できるようになった。(ただしPhotoshopで生成したPNG画像の場合、gAMAチャンクへの不適切な記述のため正常に表示されないことがある) PNGはGIFと同様な1色透過も扱え、こちらはInternet Explorer 5でも対応していた。なお、IE5.5はアルファチャンネル付きPNGを正しく表示できるActiveXプラグイン (AlphaImageLoader) を搭載しているため、この機能を使うようHTMLファイルに記述すれば表示できた。ただしIEの設定によってはアルファチャンネルとして機能せず、また他ブラウザとの互換を考えると、わざわざこの機能を利用する価値はほとんど無かった。 ユニシスの主張するLZW圧縮アルゴリズムに関する特許は、米国時間2003年6月20日をもって無効(期限切れ)になったため特許問題自体が消失した。PNGはLZW圧縮アルゴリズム特許の有効期間内で全てのGIFファイルを代替するには至らなかったが、対応ブラウザの増加とともに普及していった。 ファイルサイズ正しくエンコード処理を行ってメタデータを含まないように作成したPNG画像は、同じように処理して作成したGIF画像より小さくなるはずである。しかしPNGはGIFより機能が多いため、大きなサイズになってしまうことがある。 GIFは256色に制限されているため、多くのソフトはフォーマットの変換を行うとき自動的に256色に減色して保存する。そのためフルカラーの画像をPNGとGIFに保存した場合、GIFの方がサイズが小さくなる(かわりに画質は落ちている)。GIF同様256色のPNGを作ればGIFよりサイズが小さくなるにもかかわらず、PNGは256色より多い色数を利用できるため変換時に自動で減色されない場合がある。その結果同じ画像をGIFにした場合よりサイズが大きくなってしまう。 インターレースPNGはインターレースGIFに比べ、圧縮率が低くファイルサイズが大きくなる場合が多い。また、インターレースPNGは通常のPNGより、ファイルサイズが大きくなりがちである。 ソフトウェアによっては、出力されるPNGファイルのサイズは必ずしも最適化されないため、ファイルサイズを減らすためにはPNG最適化ソフトウェアなどでPNGファイルを最適化するとよい。最適化のためのソフトウェアとしては、 OptiPNG、PNGOUT、pngrewrite、Pngcrushなどがある。また、Windows用ながらもBlastPNGのような複数の最適化ソフトウェアを一度に扱えるフロントエンドなどもある。 PNGはJPEGに取って代わるものではない。JPEGは写真の圧縮に適した非可逆圧縮方式であり、写真画像に限ってはJPEGのほうがファイルサイズが小さくなる。一方で、文字や線画などの保存はJPEGだと圧縮ノイズが目立ってしまうのでPNGのほうが適している上、ファイルサイズもかなり小さくなる。また、加工を繰り返す予定のある画像はJPEGでは劣化が進んでしまうのでPNG保存が望ましい。 出典
仕様書
参考文献
関連項目外部リンク |