ISO/IEC_15948とは - わかりやすく解説 Weblio辞書 (original) (raw)

Portable Network Graphics

上は、8ビット透明チャネルを含むPNG画像。下は、同じ画像を市松模様の背景の上に重ねたもの。市松模様は透明であることを示すためにグラフィックエディタなどでよく用いられる。
拡張子 .png
MIMEタイプ image/png
タイプコード PNGf PNG
UTI public.png
マジック ナンバー 89 50 4e 47 0d 0a 1a 0a (16進表現) \x89PNG\r\n\x1a\n (文字列表現)
開発者 W3C
初版 1996年10月1日 (29年前) (1996-10-01)
最新版 Third Edition(2025年6月24日 (6か月前) (2025-06-24))
種別 可逆圧縮ビットマップ画像
包含物 画像テキスト
拡張 APNGJNGMNG
国際標準 W3C PNGISO/IEC 15948
テンプレートを表示

(ポータブル・ネットワーク・グラフィックス、PNG、ピング、ピン[1])はコンピュータビットマップ画像を扱うファイルフォーマットである。圧縮アルゴリズムとしてDeflateを採用している、圧縮による画質の劣化のない可逆圧縮画像ファイルフォーマットである。

1996年に登場し、可逆圧縮の画像フォーマットとして既に普及していたGIFの後継フォーマットとなることを目指し、ネットワーク経由での使用を想定した機能や透過処理など、多くの機能をサポートした。ウェブブラウザグラフィックソフトでのサポートも進み、インターネットを中心に普及した。

「PNG」は「ピング」や「ピン」と多く読まれる。

概説

画像の色モデル(英語版)として、最大16ビットのグレースケール、24ビットと 48ビットのRGB、または8ビットまでのインデックスカラーモード(パレットカラー) を利用することができる[2][3][4]。透過についてはクロマキーによる透過指定、および8ビットから16ビットのアルファチャンネルをサポートする[5]。また、画像に付属するテキストなどのメタデータガンマ値なども画像ごとに記録できる[1]

最初期のPNGにはGIFアニメーションに相当する機能はなかったが、2004年よりアニメーテッドPNG (APNG) が拡張仕様として開発され、アニメーションが可能になった。APNGは2020年ごろ主なWebブラウザ全ての対応が完了し、広く使用可能になった。2025年にはAPNGは正式にPNG仕様の一部となった。

歴史

PNGが開発された動機は、1994年末に、GIFに使われていた圧縮アルゴリズムLZWについて米ユニシスが特許を保有しているとし、GIFを使ったソフトウェアに特許権を行使すると発表したことによる[6]。実際、PNGの頭文字は非公式に「PNG is not gif」という意味が込められている[7][8][9]再帰的頭字語)。また、当時256色以上表示可能なコンピュータが主流になってきたため、GIFフォーマットにある256色までという制限を解消する必要もあった。1999年、ユニシスが非商用ソフトについても特許使用料を請求することを決める[10]と、PNGはさらに注目を集めるようになった。

技術詳細

詳しくは、仕様書[spec 1][spec 2][spec 3]を参照。

ファイルヘッダ

PNG ファイルはヘッダに 8 バイトのシグネチャ(マジックナンバー)を持つ[18]。16進数の値は「89 50 4E 47 0D 0A 1A 0A」である[18](制御文字で表すと HTJ P N G CR LF SUB LF)。各値の意味は次の通り。

ファイル先頭からのバイト位置 説明
1バイト目 89 8ビットデータをサポートしない転送システムを検知するためのハイビット値[18]。また、テキストファイルが誤ってPNGと認識されるのを防ぐ。
2バイト目 50 アスキーコードで P、N、G を表す[18]。テキストエディタで開いた場合などに、フォーマットをわかりやすくするため。
3バイト目 4E
4バイト目 47
5バイト目 0D DOSスタイルの改行 (CR LF)[18]。DOSからUNIXへの行末データ変換が行われていないかを検知する[18]
6バイト目 0A
7バイト目 1A DOSで TYPE コマンドを使ってファイル表示をさせた場合、SUB (EOF) として表示を停止させるバイト[18]
8バイト目 0A UNIXスタイルの行末 (LF)[18]。UNIXからDOSへの行末変換が行われていないかを検知する[18]

ファイルヘッダの後にはIHDRチャンクが必ず来て[19]、IHDRチャンクのサイズは13バイト固定なため、シグネチャの次の8バイトも00 00 00 0D 49 48 44 52で固定されている。

チャンク

ファイルヘッダに続いて、チャンクと呼ばれる複数のデータブロックが続く。各チャンクは画像についての様々な情報を保持するもので、必須チャンクと補助チャンクに分けられる。補助チャンクは任意的なもので、処理プログラム側によっては必ずしも処理されない。このチャンク構造により、PNGフォーマットは拡張性と前方互換性を両立する。

チャンクの構造は、

  1. チャンクサイズ。ビッグエンディアン(4バイト)
  2. チャンクの種類(4バイト)
  3. 実際のデータ
  4. データのCRC-32(4バイト)

の順番で配置される[20]

チャンクの種類は、大文字と小文字が区別されるアルファベット4文字で表される[20]

必須チャンク

PNGファイルの読み込みと表示に必要なチャンクで、デコーダが適切に処理する必要がある[20]

PLTEチャンクはカラータイプ 3 (インデックスカラー)を使用するときに必須となる。カラータイプ 2 と 6 (トゥルーカラー及び、アルファ情報付きトゥルーカラー)の場合は任意、さらにカラータイプ 0 と 4(グレースケール及び、アルファ情報付きグレースケール)の場合は存在してはいけない。

補助チャンク

イメージについての付加情報を保持するための任意チャンク。

フィルタ処理

PNGのイメージデータはzlibにより圧縮されるが、画像の特徴を利用して圧縮の効率を良くするために、フィルタで事前に処理を行えるようになっている[21]。(展開時には、逆のフィルタがかかる)

例えば、ピクセルの値が次のように並んでいたとする。

100,101,102,103,104,105

このデータには冗長な値が無く、このままDeflate圧縮を行っても効果は得られない。しかし例えば「左の値との差」をとると、データは以下のようになる。

100,1,1,1,1,1

この状態で圧縮すれば、最初の状態よりも高い効果が得られる。上記は極端な例であるが、このように事前に簡単な演算を行うことは、データによっては圧縮率の改善に役立つ。

PNGでは5種類のフィルタを定義している。

Sub

左隣のバイトとの差をとる[21](上記)。

Up

真上のバイトとの差をとる[21]

Average

左隣と真上のバイトの平均値との差をとる[21]

Paeth

左隣、真上、左上の3つのバイトからPaeth値を計算し、その値との差をとる[21]

None

何もしない[21]

このフィルタは横一ライン毎に変更できる。どのフィルタをどこに使うかは使用する圧縮プログラムが選択できるため、プログラムによって同じ画像でも異なるサイズになりうる。

圧縮

圧縮アルゴリズムはDeflate (RFC 1951) を使用し、フォーマットはzlib形式 (RFC 1950) と定められている[22]。DeflateのアルゴリズムそのものはPNGの仕様書には書かれていない。圧縮後のデータは、そのまま IDAT チャンクに格納される。

なおPNGはDeflate以外の圧縮形式もサポート出来るように設計されており、IHDRチャンクやiTXtチャンクには、使用する圧縮形式を明示するCompression methodフィールドがある。ただしVer1.2時点ではCompression methodフィールドで使える値はDeflateを示す一種類だけである。

開発者向けのツール

PNGを処理するための開発者向けライブラリとしてlibpngがある。これはPNG公式のライブラリであり、最も広く利用されている。C言語で開発されており、多くのプラットフォームで動作する。ライセンスはGPLよりも制限が緩やかである。

他のフォーマットとの比較

POV-Rayで作られたPNGの画像

GIF との比較

GIF の代替物として開発された経緯があるため、GIFと比較されることが多い。主な差異は以下の通り。

JPEGとの比較

JPEGとPNGとの比較を示した画像。: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ファイルを最適化するとよい。最適化のためのソフトウェアとしては、 OptiPNGPNGOUTpngrewritePngcrushなどがある。また、Windows用ながらもBlastPNGのような複数の最適化ソフトウェアを一度に扱えるフロントエンドなどもある。

PNGはJPEGに取って代わるものではない。JPEGは写真の圧縮に適した非可逆圧縮方式であり、写真画像に限ってはJPEGのほうがファイルサイズが小さくなる。一方で、文字や線画などの保存はJPEGだと圧縮ノイズが目立ってしまうのでPNGのほうが適している上、ファイルサイズもかなり小さくなる。また、加工を繰り返す予定のある画像はJPEGでは劣化が進んでしまうのでPNG保存が望ましい。

出典

  1. ^ a b Greg Roelofs 2003, Chapter 1. An Introduction to PNG.
  2. ^ a b c Greg Roelofs 2003, 1.2. What Is PNG Good For?.
  3. ^ Greg Roelofs 2003, 1.2.4. Compression.
  4. ^ Greg Roelofs 2003, 8.5. PNG Image Types.
  5. ^ a b Greg Roelofs 2003, 1.2.1. Alpha Channels.
  6. ^ Greg Roelofs 2003, Chapter 7. History of the Portable Network Graphics Format.
  7. ^ Greg Roelofs (2012年5月29日). “History of PNG”. Libpng.org. 2012年8月9日閲覧。
  8. ^GIF,JPEG OR PNG?”. 2012年8月8日閲覧。
  9. ^ Greg Roelofs 2003, 7.1. Anatomy of an Internet Working Group.
  10. ^GNUのウェブページにGIFファイルが一つも無い理由”. 2021年12月28日閲覧。
  11. ^PNG (Portable Network Graphics) Specification”. w3.org. 2025年12月22日閲覧。
  12. ^ a b Greg Roelofs 2003, Table 7-1.
  13. ^日本産業標準調査会:廃止規格検索 X4242 日本産業標準調査会
  14. ^Portable Network Graphics (PNG) Specification (Second Edition)”. w3.org. 2025年12月21日閲覧。
  15. ^ 宇都宮 充 (2025年6月27日). “PNGが約20年ぶりの仕様改訂。HDRやアニメーションのサポートなど”. インプレス. https://pc.watch.impress.co.jp/docs/news/2026517.html 2025年5月28日閲覧。
  16. ^Portable Network Graphics (PNG) Specification (Third Edition) is now a W3C Recommendation”. W3C.org. World Wide Web Consortium (2025年6月24日). 2025年6月28日閲覧。
  17. ^Change RFC2083 PNG (Portable Network Graphics) to Historic” (2025年8月21日). 2025年12月21日閲覧。
  18. ^ a b c d e f g h i Greg Roelofs 2003, 8.2. PNG Signature.
  19. ^ Greg Roelofs 2003, 8.4. The Simplest PNG.
  20. ^ a b c d e f g h i j Greg Roelofs 2003, 8.1. Chunks.
  21. ^ a b c d e f Greg Roelofs 2003, 9.1. Filtering.
  22. ^ Greg Roelofs 2003, 9.2. The Deflate Compression Algorithm.
  23. ^ Greg Roelofs 2003, 9.3. Real-World Comparisons.

仕様書

  1. ^ a b ISO/IEC 15948:2004. ISO. (2004). https://www.iso.org/standard/29581.html
  2. ^PNG 1.2 仕様書 日本語訳”. 2005年6月24日時点のオリジナルよりアーカイブ。2005年6月24日閲覧。
  3. ^Portable Network Graphics (PNG) Specification and Extensions” (英語). 2012年8月9日閲覧。

参考文献

関連項目

外部リンク

マルチメディア圧縮フォーマット
動画ファイルフォーマット ISO/IEC MJPEG Motion JPEG 2000 MPEG-1 MPEG-2 Part 2(英語版MPEG-4 Part 2/ASP(英語版Part 10/AVC MPEG-H Part 2/HEVC MPEG-I VVC MPEG-5 ITU-T H.120(英語版H.261 H.262 H.263 H.264 H.265 DV H.266 H.267 SMPTE VC-1 VC-2 (Dirac) VC-3 VC-5(英語版) VC-6 AOMedia AV1 IETF VP8 SAC AVS(英語版) その他 Apple Video(英語版) Bink(英語版) DVI(英語版) EVC(英語版GIFアニメーション Microsoft Video 1(英語版) MSU Lossless(英語版) OMS Video(英語版ProRes 422 ProRes 4444 RTVideo(英語版) SheerVideo(英語版) Smacker(英語版Snow Sorenson Video, Spark(英語版VP6 VP9 WMV YULS(英語版) XVC Xvid 可逆圧縮 FFV1(英語版Ut Video Codec Suite 開発停止 Zlib Cinepak Daala Huffyuv Lagarith(英語版RealVideo RMP4 Indeo Microsoft MPEG-4 QuickTime Pixlet Animation(英語版) Graphics(英語版Theora Thor VP3 VP7 XEB XVD
音声ファイルフォーマット ISO/IEC MPEG-1 Layer III (MP3) MPEG-1 Layer II Multichannel(英語版) MPEG-1 Layer I(英語版AAC HE-AAC AAC-LD(英語版) MPEG Surround(英語版MPEG-4 ALS MPEG-4 SLS MPEG-4 DST MPEG-4 HILN MPEG-4 HVXC MPEG-4 CELP MPEG-D USAC(英語版) MPEG-H 3D Audio(英語版ITU-T G.711 (A-law, µ-law) G.718 G.719 G.721 G.722 G.722.1 G.722.2 G.723 G.723.1 G.726 G.728 G.729 G.729.1 IETF FLAC Opus iLBC Vorbis 3GPP AMR AMR-WB AMR-WB+ EVRC EVRC-B(英語版EVS GSM-HR GSM-FR GSM-EFR ETSI AC-3 AC-4(英語版DTS SAC AVS(英語版) DRA(英語版) その他 ADPCM ALAC Codec 2(英語版Monkey's Audio OptimFROG(英語版PCM WavPack TAK MQA(英語版) 開発停止 ACELP Asao(英語版ATRAC CELT iSAC(英語版La Musepack MT9(英語版) OSQ(英語版PASC QCELP(英語版RealAudio RCELP RTAudio(英語版SD2 SHN SILK(英語版) Siren(英語版SMV Speex SVOPC(英語版VMR-WB TTA TwinVQ VSELP(英語版WMA Bluetooth SBC (codec)(英語版aptX LDAC LC3
画像ファイルフォーマット IEC, ISO,ITU-T, W3C, IETF CCITT Group 4(英語版GIF HEIF HEVC JBIG JBIG2 JPEG JPEG-LS JPEG 2000 JPEG XR JPEG XS(英語版) JPEG XT(英語版JPEG XL Lossless JPEG PNG APNG TIFF TIFF/EP(英語版) TIFF/IT(英語版WebP その他 AVIF BPG DjVu DNG EXR FLIF(英語版) ICER(英語版ILBM JPEG Network Graphics MNG PCX PGF(英語版) QTVR(英語版TGA WBMP
マルチメディアコンテナフォーマット ISO/IEC MPEG-ES(英語版) MPEG-PES(英語版) MPEG-PS(英語版MPEG-TS ISO base media file format(英語版MPEG-4 Part 14 (MP4) Motion JPEG 2000 MPEG-21 Part 9 MPEG media transport(英語版ITU-T H.222.0 T.802 IETF Matroska Ogg RTP SMPTE GXF(英語版MXF 3GPP 3GP and 3G2(英語版) 3GP 3G2 その他 AMV ASF AIFF AVI AU BPG Bink(英語版) Smacker(英語版BMP DivX Media Format DPX DSM EVO(英語版Flash Video (FLV) IFF M2TS(英語版WebM QuickTime File Format(英語版) (MOV) RatDVD RealMedia RIFF WAV MOD and TOD(英語版) VOB, IFO and BUP(英語版
団体 NETVC(英語版) MPEG LA(英語版
圧縮技術についてはデータ圧縮を、コーデックについてはデータ圧縮・伸張を行うコーデックを参照