PNG
読み:ピン
外語:PNG: Portable Network Graphics

 静止画像用の圧縮アルゴリズムおよび画像ファイルフォーマットの一つで、現在の主流。NASAのThomas Boutellによって開発が始められた。
目次

ファイル属性

概要

由来
 PNGは、従来のGIFで使われるデータ圧縮アルゴリズムLZW法がUnisys社の特許に接触し、自由に使えなくなったことから開発された。これは、Unisysが、LZWの特許を主張するというサブマリン特許問題を起こしたためである。
 PNGはGIFの後継であるため、圧縮率を含め、あらゆる性能がGIFを上まわるように設計されている。

標準化
 PNG 1.0の仕様RFC 2083でInformational(情報提供)扱いで公開され普及が始まり、やがてISO/IEC 15948として国際標準化された。
 現在の最新版はISO/IEC 15948:2004である。規格書は英語で、価格はCHF180(およそ1万5000円)と、比較的高価である。

特徴

利点
 GIFと比べ、次のような特徴がある。

圧縮
 PNGは、ファイルヘッダーに圧縮方式を表わす領域が存在し、様々なものが選択可能な仕様となっている。
 ただし、実際には可逆圧縮でライセンスフリーのzlibのみが使われている。
 これは、GIFの代替であって、JPEGファイル(JFIF)の代替ではないからである。zlibの圧縮率は必ずしも最良ではないが、これによるライセンス料の徴収がないという点がPNGの誕生経緯における最大の特徴だった。それでもGIFが用いているLZWよりは良い圧縮率を示すことが多い。

色数
 最大色数は1ピクセルあたり48ビット色(約280兆色)で、RGB各色65,536階調まで対応する。GIFの8ビット(256色)から大幅に拡張された。
 また、1ピクセルあたり最大16ビットのグレイスケール(白黒)画像に対応する。黒から白までを65,536段階に表現できる。
 多色対応のフルカラー画像ファイルフォーマットにJPEG(JFIF)があるが、PNGは画像の劣化が許されないような場合や図表などに使うことができる。

技術

RIFF
 GIFファイルは独自のファイル形式を持っていたが、PNGはRIFFチャンク形式を採用し、汎用性や拡張性も高い。
 例えばMacromediaのHTML制作ソフトFireworksは、このPNGに独自のRIFFチャンクを追加したものを保存形式に使用しているほどである。もちろん、このFireworksで作ったPNGは他のソフトでは普通のPNG画像ファイルとして利用できる。

ファイルヘッダー
 PNGは、送信時の破損を確認する機能を持った独特のシグネチャ(マジックナンバー)をファイルの先頭に付けている。
 0x89 "PNG" 0x0d 0x0a 0x1a 0x0aという8バイトのデータ列は、それぞれに意味がある。
0x89
 通信経路が8ビットを通すかどうかをチェックする、MSBが1になったバイト。
 ISO-646 C1制御コードとしては8/9 HTJ(CHARACTER TABULATION WITH JUSTIFICATION)というテクストファイルには使わない制御文字で、テクストファイルが誤ってPNGと認識されないように保護する機能もある。
"PNG"
このファイルがPNGであることを表わす文字列。
0x0d 0x0a
MS-DOS形式の改行コード。通信経路(DOS→UNIX)でコード変換が行なわれていないことを確認する。
0x1a
MS-DOSにおけるEOFコードで、DOSからTYPEコマンドで表示した時、ここで止め、画面が乱れないようにする。
0x0a
UNIX形式の改行コード。通信経路(UNIX→DOS)でコード変換が行なわれていないことを確認する。
 他にも応用できそうな、非常に特徴的かつ効果的なデータ列となっている。
 また、PNGファイルは必ずIHDRチャンクから始まるので、この次の8バイトは、常に00 00 00 0D 49 48 44 52となる。これも認識に使用できる。

チャンク
 PNGは、チャンクと呼ばれる構造を入れ子にした形式のファイルである。
 チャンクは、常に次の構造を取る。
 チャンクの種類は4文字のASCIIで表わされる。英字には大文字と小文字があるが、チャンク名はこの大文字と小文字に意味を持たせており、次のように使っている。

主なチャンク
 よく使われるチャンクに、次のようなものがある。
 標準補助チャンクは、必須チャンクに対して置かれる位置が決められているものがある。例えばtRNSチャンクは、PLTEチャンクの後で、かつIDATチャンクの前でなければならない。

対応ソフトウェア
 Internet Explorerは4.0以降で対応を開始した。
 Netscape Communicatorではそれに少し遅れて4.04以降でサポートされた(ただし、Windows 3.1版のNetscape Navigatorを除く)。
 他にもMacMosaicやXMosaicなどでサポートされ、今では殆ど全てのWebブラウザーで対応されている。
 HTML等からは、GIFやJPEGと同様にimg要素で利用できる。

再検索