Portable Network Graphics
Portable Network Graphics（ポータブル・ネットワーク・グラフィックス、PNG）はコンピュータでビットマップ画像を扱うファイルフォーマットである。圧縮アルゴリズムとしてDeflateを採用している、圧縮による画質の劣化のない可逆圧縮の画像ファイルフォーマットである。
1996年に登場し、可逆圧縮の画像フォーマットとして既に普及していたGIFに対しネットワーク経由での使用を想定した機能や透過処理など、多くの機能をサポートした。ウェブブラウザやグラフィックソフトでのサポートも進み、インターネットを中心に普及した。
英語でと発音されることから、「ピング」や「ピン」と多く読まれる。
画像の色モデルとして、最大16ビットのグレイスケール、24ビットと 48ビットのRGB、または8ビットまでのインデックスカラーモード（パレットカラー) を利用することができる。透過についてはクロマキーによる透過指定、および8ビットから16ビットのアルファチャンネルをサポートする。また、画像に付属するテキストなどのメタデータやガンマ値なども画像ごとに記録できる。
GIFと異なり、PNGにはアニメーション機能はない。ただし、PNGはチャンク（データのブロック）で自由に拡張できるようになっていて、1ファイルに複数の画像を含めることができる。これを使ってアニメーション機能を追加した MNG と APNG が別のフォーマットとして開発されている。他の拡張として、立体視用にステレオPNG (PNS) フォーマットがある。
PNGが開発された動機は、1995年の初めに、GIFに使われていた圧縮アルゴリズムLZWについて米ユニシスが特許を保有しているとし、GIFを使ったソフトウェアに特許権を行使すると発表したことによる。実際、PNGの頭文字は非公式に "PNG is Not GIF" という意味が込められている（再帰的頭字語）。また、当時256色以上表示可能なコンピュータが主流になってきたため、GIFフォーマットにある256色までという制限を解消する必要もあった。1999年8月、ユニシスが非商用ソフトについても特許使用料を請求することを決めると、PNGはさらに注目を集めるようになった。詳しくは、仕様書を参照。
PNG ファイルはヘッダに 8 バイトのシグネチャ（マジックナンバー）を持つ。16進数の値は89 50 4E 47 0D 0A 1A 0Aとなる（制御文字で表すとHTJ "PNG" CR LF SUB LF）。各値の意味は次の通り。
ファイルヘッダの後にはIHDRが必ず来るので、その次の8バイトも00 00 00 0D 49 48 44 52で固定されている。
ファイルヘッダに続いて、チャンクと呼ばれる複数のデータブロックが続く。各チャンクは画像についての様々な情報を保持するもので、必須チャンクと補助チャンクに分けられる。補助チャンクは任意的なもので、処理プログラム側によっては必ずしも処理されない。このチャンク構造により、PNGフォーマットは拡張性と前方互換性を両立する。
チャンクの構造は、
の順番で配置される。
チャンクの種類は、大文字と小文字が区別されるアルファベット4文字で表される。
PNGファイルの読み込みと表示に必要なチャンクで、デコーダが適切に処理する必要がある。PLTEチャンクはカラータイプ 3 （インデックスカラー）を使用するときに必須となる。カラータイプ 2 と 6 （トゥルーカラー及び、アルファ情報付きトゥルーカラー）の場合は任意、さらにカラータイプ0と4（グレースケール及び、アルファ情報付きグレースケール）の場合は存在してはいけない。
イメージについての付加情報を保持するための任意チャンク。PNGのイメージデータはzlibにより圧縮されるが、画像の特徴を利用して圧縮の効率を良くするために、フィルタで事前に処理を行えるようになっている。（展開時には、逆のフィルタがかかる)
例えば、ピクセルの値が次のように並んでいたとする。
このデータには冗長な値が無く、このままDeflate圧縮を行っても効果は得られない。しかし例えば「左の値との差」をとると、データは以下のようになる。
この状態で圧縮すれば、最初の状態よりも高い効果が得られる。上記は極端な例であるが、このように事前に簡単な演算を行うことは、データによっては圧縮率の改善に役立つ。
PNGでは5種類のフィルタを定義している。このフィルタは横一ライン毎に変更できる。どのフィルタをどこに使うかは使用する圧縮プログラムが選択できるため、プログラムによって同じ画像でも異なるサイズになりうる。
圧縮アルゴリズムはDeflate (RFC 1951) を使用し、フォーマットはzlib形式 (RFC 1950) と定められている。DeflateのアルゴリズムそのものはPNGの仕様書には書かれていない。圧縮後のデータは、そのまま IDAT チャンクに格納される。
なおPNGはDeflate以外の圧縮形式もサポート出来るように設計されており、IHDRチャンクやiTXtチャンクには、使用する圧縮形式を明示するCompression methodフィールドがある。ただしVer1.2時点ではCompression methodフィールドで使える値はDeflateを示す一種類だけである。
PNGを処理するための開発者向けライブラリとしてlibpngがある。これはPNG公式のライブラリであり、最も広く利用されている。C言語で開発されており、多くのプラットフォームで動作する。ライセンスはGPLよりも制限が緩やかである。
GIF の代替物として開発された経緯があるため、GIFと比較されることが多い。主な差異は以下の通り。
JPEGは、主に写真的なイメージデータを非可逆圧縮することでPNGよりも小さなファイルサイズに収めることができる。そのため、高画質に設定したJPEGと比較すると、ファイルサイズはJPEGの数倍（大抵は5〜10倍程度）になる。
PNGは、テキストや線画など色の境界がはっきりしたイメージに適している。線画と写真が混在している場合では、目的に応じてシャープな部分を重視する場合はPNG、ファイルサイズを重視する場合はJPEGを選ぶことができる。
JPEGは、ジェネレーションロスが生じるため、編集中の一時データの保存には向かない。PNGはその可逆性を生かして、編集やレタッチイメージの一時保存に利用し、最終イメージのみをJPEGで出力すれば、ジェネレーションロスは1世代にとどめることができる。その一方で、PNGはデジタルカメラなどで利用されているExif情報をサポートしていない。TIFFはロスレスでExifをサポートしているが、ファイルサイズではPNGに利点がある。
前述の特許権問題によりGIF排斥運動が起こったが、GIFは依然として広く使われている。それは主に以下の理由からである。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ファイルを代替するには至らなかった。特許問題が事実上消失したため、「特許に抵触しないGIFを代替可能なフォーマットのひとつ」としての存在意義は消失した。現在、PNGは「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保存が望ましい。