PNG

ポータブルネットワークグラフィックス

8ビットの透明チャンネルを持つ4つの異なる色のサイコロを市松模様の背景に重ねたPNG画像。通常、グラフィックソフトウェアで透明性を示すために使用されます
ファイル名拡張子
.png
インターネットメディアタイプ
image/png
タイプコード
  • PNGf
  • PNG(末尾に1つのスペースを含む)
統一型識別子(UTI)public.png
UTIコンフォメーションpublic.image
マジックナンバー89 50 4e 47 0d 0a 1a 0a(8バイト16進数
開発者PNG開発グループ( W3Cに寄贈)
初回リリース1996年10月1日 (1996年10月1日
最新リリース
3.0 2025年6月24日 (2025年6月24日
フォーマットの種類ロスレスビットマップ画像フォーマット
拡張APNGJNGMNG
規格ISO / IEC 15948[ 1 ] IETF RFC 2083
オープンフォーマット?はいZlib/libpng ライセンス[ 2 ]
ウェブサイト

ポータブルネットワークグラフィックスPNG、正式発音は/ p ɪ ŋ / PING[ 3 ] [ 4 ]口語発音は/ ˌ p ɛ n ˈ / PEE -en- JEE [ 5 ])は、ロスレスデータ圧縮をサポートするラスターグラフィックスファイル形式です。[ 6 ] PNGは、グラフィックス交換フォーマット(GIF)の改良版であり、特許を取得していない代替として開発されました。

PNGは、パレットベースの画像(24ビットRGBまたは32ビットRGBAカラーのパレットを使用)、グレースケール画像(透明度のためのアルファチャンネルの有無にかかわらず)、およびフルカラーの非パレットベースのRGBまたはRGBA画像をサポートしています。PNGワーキンググループは、プロ品質の印刷グラフィックではなく、インターネット上で画像を転送するためのフォーマットを設計しました。そのため、 CMYKなどのRGB以外の色空間はサポートされていません。PNGファイルには、基本ピクセルと、 RFC 2083に記載されているテキストコメントや整合性チェックなどのその他の情報がエンコードされた、拡張可能なチャンク構造の単一の画像が含まれています。 [ 7 ]

PNGファイルは「.png」というファイル拡張子と「image/png」というMIMEメディアタイプを持ちます。[ 8 ] PNGは1997年3月に情報RFC 2083として、2004年にISO/IEC 15948規格として公開されました。 [ 1 ]

歴史と発展

PNG形式作成の動機は、1994年12月28日に、GIF(Graphics Interchange Format )形式の実装は、GIFで使用されているLempel-Ziv-Welch(LZW)データ圧縮アルゴリズムの特許を保有するUnisys社にロイヤルティを支払わなければならないという発表でした。[ 9 ]これは、 Usenetユーザーからの激しい批判につながりました。その一人であるThomas Boutell氏は、1995年1月4日にUsenetニュースグループ「comp.graphics」に先駆的な議論スレッドを投稿し、GIFの無料の代替案の計画を考案しました。そのスレッドの他のユーザーは、後に最終的なファイル形式の一部となる多くの提案を行いました。人気のあるJPEGビューアQPEGの作者であるOliver Fromme氏はPINGという名前を提案し、最終的にはPNGになりました。これは、 PINGはGIFではないことを意味する再帰的な頭字語であり、[ 10 ]拡張子も.pngです後に実装された他の提案には、deflate圧縮アルゴリズム24ビットカラーのサポートなどがありました。GIFには後者が欠けていたことも、チームが独自のファイル形式を開発する動機となりました。このグループは後にPNG開発グループとして知られるようになり、議論が急速に拡大するにつれて、後にCompuServeフォーラムに関連するメーリングリストを使用するようになりました。[ 3 ] [ 11 ]

PNGの完全な仕様は、1996年10月1日にワールドワイドウェブコンソーシアム(W3C)の承認を得て公開され、その後1997年1月15日にRFC 2083として公開されました。仕様は1998年12月31日にバージョン1.1として改訂され、ガンマ色補正の技術的な問題に対処しました。1999年8月11日に公開されたバージョン1.2では、仕様の唯一の変更点としてiTXtチャンクが追加され、1.2の再フォーマット版が2003年11月10日にW3C標準の第2版として公開されました[ 12 ]。また、2004年3月3日に国際標準(ISO/IEC 15948:2004)として公開されました[ 13 ]。[ 1 ]

GIF はアニメーションが可能ですが、PNG は当初単一画像形式にすべきと決定されました。[ 14 ] 2001 年に、PNG の開発者はアニメーションをサポートするMultiple-image Network Graphics (MNG) 形式を公開しました。MNG は中程度のアプリケーション サポートを実現しましたが、主流の Web ブラウザーの間では十分ではなく、Web サイト デザイナーやパブリッシャーの間では使用されていませんでした。2008 年に、一部のMozilla開発者が同様の目的でAnimated Portable Network Graphics (APNG) 形式を公開しました。APNG は、 GeckoおよびPrestoベースの Web ブラウザーでネイティブにサポートされている形式で、Sony のPlayStation Portableシステムのサムネイルにもよく使用されています(通常の PNG ファイル拡張子を使用)。2017 年には、Chromium ベースのブラウザーが APNG サポートを採用しました。2020 年 1 月、Microsoft Edge がChromiumベースになり、APNG のサポートを継承しました。これにより、すべての主要ブラウザーが APNG をサポートするようになりました。

PNGワーキンググループは、2021年9月14日よりW3CからPNG仕様の維持と開発を行う権限を委譲されています。APNG、ハイダイナミックレンジ(HDR)、Exifデータへの適切なサポートを追加したPNG仕様第3版は、2022年10月25日に最初の公開ワーキングドラフトとして公開され、[ 15 ]、最終的に2025年6月24日にW3C勧告として発行されました。 [ 16 ] [ 17 ]

PNGワーキンググループ

オリジナルのPNG仕様は、コンピュータグラフィックスの専門家と愛好家による特別グループによって作成されました。フォーマットに関する議論と決定は電子メールで行われました。RFC 2083に記載されているオリジナルの著者は次のとおりです。[ 18 ]

ファイル形式

Ubuntuの16進エディタアプリケーションで表示したPNG画像

ファイルヘッダー

PNGファイルは8バイトの署名[ 19 ]で始まります(右側の16進エディター画像を参照)。

値(16進数目的
898ビットデータに対応していない伝送システムを検出し、テキストファイルが誤ってPNGと解釈される可能性を減らすために、 上位ビットが設定されています(その逆も同様)。
50 4E 47ASCIIではPNGという文字があり、テキスト エディターで表示するとフォーマットを簡単に識別できます。
0D 0Aデータの DOS-Unix 行末変換を検出するための DOSスタイルの行末(CRLF)。
1Aコマンドタイプが使用されたときに DOS でファイルの表示を停止するバイト(ファイル終了文字)。
0AUnix と DOS の行末変換を検出するための Unix スタイルの行末 (LF)。

ファイル内の「チャンク」

ヘッダーの後には一連のチャンクが続き、[ 20 ]各チャンクは画像に関する特定の情報を伝えます。チャンクは自身が重要または補助的であると宣言し、理解できない補助チャンクに遭遇したプログラムはそれを無視しても問題ありません。このチャンクベースのストレージ層構造は、コンテナ形式AmigaIFFに概念的に似ており、PNG形式を拡張しながら古いバージョンとの互換性を維持できるように設計されており、前方互換性を提供し、この同じファイル構造(異なる署名とチャンクを使用)が関連するMNGJNG、およびAPNG形式で使用されています。

チャンクは4つの部分から構成されます。長さ(4バイト、[ 21 ]ビッグエンディアン)、チャンクタイプ/名前(4バイト[ 22 ])、チャンクデータ(長さバイト)、CRC(巡回冗長検査コード/チェックサム、4バイト[ 21 ])です。CRCは、チャンクタイプとチャンクデータに基づいて計算されるネットワークバイトオーダーCRC-32であり、長さは考慮されません。

長さ チャンクタイプ チャンクデータ CRC
4バイト 4バイト 長さバイト 4バイト

チャンクタイプには、大文字と小文字を区別する4文字のASCIIタイプ/名前が与えられます。FourCCを参照してください名前に含まれる文字の大文字と小文字(文字の数値のビット5)は、デコーダーが認識できないチャンクの性質に関する情報を 提供するビットフィールドです。

最初の文字の大文字/小文字は、チャンクがクリティカルチャンクであるかどうかを示します。最初の文字が大文字の場合、チャンクはクリティカルチャンクであり、そうでない場合は補助チャンクです。クリティカルチャンクには、ファイルの読み取りに必要な情報が含まれています。デコーダーが認識できないクリティカルチャンクに遭遇した場合、ファイルの読み取りを中止するか、ユーザーに適切な警告を表示する必要があります。

2文字目の大文字/小文字は、チャンクが「パブリック」(仕様書または特殊用途のパブリックチャンクのレジストリで定義)か「プライベート」(標準化されていない)かを示します。大文字はパブリック、小文字はプライベートです。これにより、パブリックチャンク名とプライベートチャンク名が競合することはありません(ただし、プライベートチャンク名が2つある場合は競合する可能性があります)。

PNG仕様に準拠するには、3番目の文字は大文字でなければなりません。これは将来の拡張のために予約されています。デコーダーは、3番目の文字が小文字のチャンクを、他の認識されないチャンクと同様に扱う必要があります。

4文字目の大文字/小文字は、そのチャンクを認識しないエディタでコピーしても安全かどうかを示します。小文字の場合、ファイルへの変更の程度に関わらず、チャンクを安全にコピーできます。大文字の場合、変更が重要なチャンクに影響を与えていない場合にのみコピーできます。

重要なチャンク

デコーダーは、PNGファイルを読み込んでレンダリングするために、重要なチャンクを解釈できる必要があります

  • IHDR最初のチャンクである必要があります。これは13データバイトの長さで、画像の
    • 幅(4バイト)
    • 高さ(4バイト)
    • ビット深度(1バイト、値1、2、4、8、または16)
    • 色のタイプ(1バイト、値0、2、3、4、または6)
    • 圧縮方法(1バイト、値0)
    • フィルタ方式(1バイト、値0)
    • インターレース方式(1バイト、値0「インターレースなし」または1「Adam7インターレース」)。[ 12 ]

ワールドワイドウェブコンソーシアムによれば、ビット深度は「サンプルあたりまたはパレットインデックスあたりのビット数(ピクセルあたりではない)」と定義されています。[ 12 ]

  • PLTEパレット(色のリスト)が含まれています。
  • IDAT画像が含まれており、複数のIDATチャンクに分割される場合があります。このような分割によりファイルサイズはわずかに大きくなりますが、PNGをストリーミング形式で生成することが可能になります。IDATチャンクには、圧縮アルゴリズムの出力ストリームである実際の画像データが含まれています。[ 23 ]
  • IEND画像の終了を示す。IENDチャンクのデータフィールドは0バイト/空である。[ 24 ]

このPLTEチャンクはカラータイプ3(インデックスカラー)では必須です。カラータイプ2と6(トゥルーカラーとアルファ付きトゥルーカラー)ではオプションですが、カラータイプ0と4(グレースケールとアルファ付きグレースケール)では使用しないでください。

補助チャンク

PNGファイルに保存できるその他の画像属性には、ガンマ値、背景色、テキストメタデータ情報などがあります。PNGはICCカラープロファイルを組み込むことでカラーマネジメントもサポートしています。[ 25 ]

  • bKGDデフォルトの背景色を指定します。これは、スタンドアロンの画像ビューア(Webブラウザは除く。詳細は下記を参照)など、他に適切な選択肢がない場合に使用することを目的としています。
  • cHRMディスプレイの原色白色点の色度座標を示します。
  • cICPITU-T H.273で定義されている色空間、伝達関数、行列係数を指定します。[ 26 ]カラープロファイルを必要とせずにHDR画像で使用することを目的としています。 [ 27 ]
  • dSIGデジタル署名を保存するためのものです。[ 28 ]
  • eXIfExifメタデータを保存します。[ 29 ] [ 30 ]
  • gAMAガンマを指定します。gAMAチャンクは4バイトのみで構成され、その値はガンマ値に100,000を掛けた値を表します。例えば、ガンマ値1/3.4は29411.7647059((1/3.4)*(100,000))と計算され、保存のために整数(29412)に変換されます。[ 31 ]
  • hISTヒストグラム、つまり画像内の各色の合計量を保存できます。
  • iCCPICC カラー プロファイルです。
  • iTXtキーワードとUTF-8テキストを含み、圧縮可能なエンコードと言語タグでマークされた翻訳が含まれます。拡張メタデータプラットフォーム(XMP)は、このチャンクをキーワード「XML:com.adobe.xmp」とともに使用します。
  • pHYs意図したピクセルサイズ(またはピクセルアスペクト比)を保持します。pHYには「単位あたりのピクセル数、X軸」(4バイト)、「単位あたりのピクセル数、Y軸」(4バイト)、「単位指定子」(1バイト)の合計9バイトが含まれます。[ 32 ]
  • sBIT(有効ビット)はソースデータの色精度を示します。このチャンクには、色の種類に応じて合計1~5バイトが含まれます。[ 33 ] [ 34 ] [ 35 ]
  • sPLTすべての色を利用できない場合は、使用するパレットを提案します。
  • sRGB標準のsRGBカラースペースが使用されていることを示します。sRGBチャンクには1バイトのみが含まれており、「レンダリングインテント」に使用されます(レンダリングインテントには0、1、2、3の4つの値が定義されています)。[ 36 ]
  • sTER立体画像用の立体画像インジケータチャンク。[ 37 ]
  • tEXtISO/IEC 8859-1で表現できるテキストを格納できます。各チャンクにはキーと値のペアが1つずつあります。「キー」は1文字から79文字までの長さでなければなりません。区切り文字はヌル文字です。「値」は、最大許容チャンクサイズからキーワードと区切り文字の長さを引いた値まで、0文字を含む任意の長さにすることができます。「キー」と「値」のどちらにもヌル文字を含めることはできません。先頭または末尾にスペースを入れることもできません。
  • tIME画像が最後に変更された時刻を保存します。
  • tRNS透明度情報を保持します。インデックス画像の場合、1つまたは複数のパレットエントリのアルファチャンネル値を格納します。トゥルーカラー画像およびグレースケール画像の場合、完全に透明とみなされる単一のピクセル値を格納します。
  • zTXtと同じ制限を持つ圧縮テキスト (および圧縮方式マーカー) が含まれますtEXt

ピクセルフォーマット

許容される色の種類とビット深度の組み合わせ[ 12 ]
カラータイプ チャンネル チャンネルあたりのビット数
124816
インデックス 1 1248
グレースケール 1 124816
グレースケールとアルファ 2 1632
トゥルーカラー 3 2448
トゥルーカラーとアルファ 4 3264

PNG画像のピクセルは数値であり、パレット内のサンプルデータのインデックス、またはサンプルデータそのもののいずれかです。パレットはPLTEチャンクに含まれる別のテーブルです。1ピクセルのサンプルデータは、1~4個の数値の組で構成されます。ピクセルデータがパレットインデックスを表すか明示的なサンプル値を表すかにかかわらず、数値はチャンネルと呼ばれ、画像内のすべての数値は同一の形式でエンコードされます

許可されているフォーマットでは、各数値を固定ビット数(PNG仕様ではビット深度)を使用して符号なし整数値としてエンコードします。これは、各チャンネルではなく各ピクセルの総ビット数を指すために一般的に使用される色深度とは異なることに注意してください。許可されているビット深度は、各ピクセルに使用される総ビット数とともに表にまとめられています。

チャンネルの数は、画像がグレースケールかカラーか、およびアルファ チャンネルがあるかどうかによって異なります。PNG では、カラー タイプと呼ばれる次のチャンネルの組み合わせが可能です。

0 (000 2 )グレースケール
2 (010 2 )赤、緑、青:RGB/トゥルーカラー
3 (011 2 )インデックス: 色のパレットのインデックスを含むチャネル
4 (100 2 )グレースケールとアルファ:各ピクセルの 不透明
6 (110 2 )赤、緑、青、アルファ

色の種類は8ビット値として指定されますが、下位3ビットのみが使用され、その場合でも上記5つの組み合わせのみが許可されます。色の種類が有効である限り、隣の表にまとめられているように、ビットフィールドと見なすことができます。

PNGカラータイプ
カラータイプ 名前 バイナリ マスク
 ACP
0グレースケール 0000  
2トゥルーカラー 0010 カラー
3インデックス 0011 色、パレット
4グレースケールとアルファ 0100 アルファ
6トゥルーカラーとアルファ 0110 アルファ、カラー
  • ビット値1: 画像データはパレットインデックスを格納します。これはビット値2との組み合わせでのみ有効です。
  • ビット値2: 画像サンプルには、三原色をエンコードする3つのデータチャンネルが含まれます。それ以外の場合、画像サンプルには、相対輝度をエンコードする1つのデータチャンネルが含まれます。
  • ビット値4:画像サンプルには、ピクセルの不透明度を線形に表すアルファチャンネルも含まれています。これはビット値1との組み合わせでは無効です。

インデックスカラー画像の場合、パレットは常に3原色をチャネルあたり8ビット(パレットエントリあたり24ビット)の深度で保存します。さらに、パレットエントリの8ビットアルファ値のリストをオプションで含めることができます。このリストが含まれていない場合、またはパレットよりも短い場合、残りのパレットエントリは不透明と見なされます。パレットは、画像のビット深度で許容されるよりも多くのエントリを持つことはできませんが、それよりも少ないエントリを持つことは可能です(たとえば、8ビットピクセルの画像で90色のみを使用する場合、256色すべてに対応するパレットエントリは必要ありません)。パレットには、画像内に存在するすべてのピクセル値のエントリが含まれている必要があります。

この規格では、インデックスカラーPNGは1ピクセルあたり1、2、4、または8ビットのビット深度が許可されています。アルファチャンネルのないグレースケール画像は、1ピクセルあたり1、2、4、8、または16ビットのビット深度が許可されます。その他の画像では、チャンネルあたり8または16ビットのビット深度が使用されます。この規格で許可される組み合わせは上記の表に示されています。この規格では、デコーダーがサポートされているすべてのカラーフォーマットを読み取れることが要求されていますが、多くの画像エディターはそれらのごく一部しか生成できません。

画像の透明度

PNGは様々な透明度オプションを提供します。トゥルーカラーおよびグレースケール画像では、単一のピクセル値を透明として宣言するか、アルファチャンネルを追加して任意の割合の部分的な透明度を使用できます。パレット画像の場合、パレットエントリにアルファ値を追加できます。保存されるアルファ値の数はパレットエントリの総数よりも少ない場合があり、その場合、残りのエントリは完全に不透明と見なされます

意図せず透明になってしまうピクセルを避けるため、色数を減らす前に、バイナリ透明度のピクセル値のスキャンを実行する必要があります。これは、仕様に準拠するために16ビット/チャネルの画像をデコードできるものの、出力は8ビット/チャネル(ハイエンドシステムを除くすべてのシステムで標準)のみであるシステムで問題となる可能性が最も高くなります。

アルファ保存は「関連付けられた」(「事前乗算された」)アルファと「関連付けられていない」アルファの2種類がありますが、PNGは[ 38 ]「関連付けられていない」(「事前乗算されていない」)アルファを標準化しています。つまり、画像はアルファエンコードされていないということです。つまり、RGBで表現される発光は、ピクセルレベルの発光とは異なります。つまり、over演算はRGB発光にアルファを乗算することになり、発光と遮蔽を適切に表現できません。

圧縮

PNGは2段階の圧縮プロセスを使用します。

  • 圧縮前:フィルタリング(予測)
  • 圧縮: DEFLATE

PNGは、 LZ77ハフマン符号化を組み合わせた、特許取得されていないロスレスデータ圧縮アルゴリズムであるDEFLATEを使用しています。zlibなどの、許容ライセンスのDEFLATE実装は広く利用可能です。

JPEG などの非可逆圧縮形式と比較すると、平均よりも高い圧縮設定を選択すると処理が遅くなりますが、ファイル サイズが大幅に小さくなることはありません。

フィルタリング

PNGのフィルタ方式0は、ピクセルA、B、Cのデータを使用してXの値を予測できます
256色のPNGファイルは、プリフィルタを適用してもわずか251バイトです。同じ画像をGIFファイルに変換すると、13倍以上のサイズになります。

DEFLATEを適用する前に、データは予測方式で変換されます。画像全体には単一のフィルタ方式が使用され、各画像ラインにはフィルタタイプが選択され、データがより効率的に圧縮されるよう変換されます。[ 39 ]スキャンラインに使用されるフィルタタイプは、インライン解凍を可能にするためにスキャンラインの先頭に追加されます。

現在の PNG 仕様にはフィルタ方法が 1 つしかありません (方法 0 で示される)。したがって、実際には各行にどのタイプのフィルタを適用するかしか選択肢がありません。この方法では、フィルタは前の隣接ピクセルの値に基づいて各ピクセルの値を予測し、 DPCM の場合と同様に、実際の値からピクセルの予測色を減算しますこの方法でフィルタリングされた画像行は、特に上記の行に類似している場合、生の画像行よりも圧縮率が高くなることがよくあります。これは、予測との差が、すべての可能な画像値に広がるのではなく、一般に 0 の周りに集まるためです。これは、別々の行を関連付ける場合に特に重要です。DEFLATE は、画像が 2D エンティティであることを理解せず、画像データをバイトのストリームとしてのみ見るためです。

フィルタ方式0には5種類のフィルタタイプがあります。各タイプは、左側のピクセル(A)、上のピクセル(B)、上と左のピクセル(C )、またはそれらの組み合わせに基づいて、フィルタリング前の画像データの各バイトの値を予測し、予測値と実際の値のをエンコードします。フィルタはピクセルではなくバイト値に適用されます。ピクセル値は1バイトまたは2バイト、あるいはバイトごとに複数の値を持つ場合がありますが、バイト境界を越えることはありません。フィルタタイプは次のとおりです。[ 40 ]

タイプバイトフィルタ名予測値
0なしゼロ(生のバイト値が変更されずに通過する)
1サブバイトA(左)
2バイトB(上)
3平均バイトAとバイトBの平均(切り捨て)
4パエスABCのうち、 p = A + BCに最も近いもの

PaethフィルタはAlan W. Paethによるアルゴリズムに基づいています。[ 41 ]ロスレスJPEGで使用されているDPCM のバージョンや、 1×2、2×1、または(Paeth予測子の場合)2×2のウィンドウとHaarウェーブレットを使用した離散ウェーブレット変換と比較してください。

圧縮率は、行ごとにフィルタの種類を適応的に選択することでさらに向上します。この改善と、PNG書き込みソフトウェアで一般的に使用されているヒューリスティックな実装方法は、Lee Daniel Crockerによって考案されました。彼は、このフォーマットの開発中に多くの画像でこの手法をテストしました。[ 42 ]フィルタの選択は、後述するように、ファイルサイズの最適化の要素です。

インターレースを使用する場合、インターレースの各段階は個別にフィルタリングされます。つまり、各段階が受信されるたびにイメージを段階的にレンダリングできます。ただし、一般的にインターレースを使用すると圧縮の効果は低下します。

インターレース

16×16の画像にAdam7インターレースを

PNGは、オプションで2次元7パスインターレース方式(Adam7アルゴリズム)を提供しています。これはGIFの1次元4パス方式よりも洗練されており、特にバイキュービック補間などの補間アルゴリズムを使用する場合、転送の早い段階でより鮮明な低解像度画像を表示できます。[ 43 ]

ただし、7 パス方式では、より単純な方式よりもデータの圧縮率が低下する傾向があります。

アニメーション

APNG(アニメーションPNG)ファイル(一部のウェブブラウザでは静止画像として表示されます)

PNGコア形式はアニメーションをサポートしていません。MNGPNGの拡張版であり、アニメーションをサポートしており、PNGグループのメンバーによって設計されました。MNGはPNGと基本的な構造とチャンクを共有していますが、はるかに複雑でファイルシグネチャも異なるため、標準的なPNGデコーダーとは互換性がありません。そのため、ほとんどのウェブブラウザやアプリケーションはMNGをサポートしなかったか、サポートを中止しました。

MNG の複雑さから、Mozilla Foundation の開発者らはAPNGを提案した。これは PNG をベースとし、アニメーションをサポートし、MNG よりも単純である。APNG は、APNG をサポートしない PNG デコーダーのために単一画像表示へのフォールバックを提供する。今日、APNG 形式はすべての主要なウェブブラウザーでサポートされている。 [ 44 ] APNG は、 Firefox 3.0 以上、Pale Moon (全バージョン)、Safari 8.0 以上でサポートされている。[ 45 ] Chromium 59.0 で APNG のサポートが追加され、[ 46 ] [ 47 ] Google Chrome がそれに続いた。Operaバージョン 10 - 12.1 で APNG をサポートしていたが、バージョン 15 でBlinkレンダリング エンジンに切り替えた際にサポートが失効した。Opera 46 (Chromium 59 から継承) で再度サポートが追加された。[ 48 ] Microsoft Edge は、Chromium ベースのエンジンに切り替えたバージョン 79.0 以降で APNG をサポートしている。

PNGグループは2007年4月にAPNGを採用しないことを決定しました。[ 49 ] ANG、aNIM/mPNG、「PNG in GIF」、そのサブセットである「RGBA in GIF」など、いくつかの代替案が議論されていました。[ 50 ]しかし、現在広く支持されているのはAPNGだけです。

2025年6月にPNG仕様の第3版がリリースされ、現在PNGワーキンググループによってメンテナンスされており、[ 15 ] APNGは最終的に拡張機能として仕様に組み込まれました。[ 51 ]

非常にシンプルなPNGファイルの構造
89 50 4E 47 0D 0A 1A 0APNG署名 IHDR画像ヘッダー IDAT画像データ IEND画像終了
1つの赤色ピクセルを表す最小限のPNGファイルの内容
16進数 文字として

89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 00 00 00 01 00 00 00 01 08 02 00 00 00 90 77 53 DE 00 00 00 0C 49 44 41 54 08 D7 63 F8 CF C0 00 00 03 01 01 00 18 DD 8D B0 00 00 00 00 49 45 4E 44 AE 42 60 82

.PNG.... ....IHDR ..................wS ....IDAT..c.... .... ....IEN D.B`。

IHDRチャンク
チャンクへのオフセット 16進値 10進値 テキスト 意味
0 0x0D 13 IHDRチャンクには13バイトのコンテンツがあります
4 0x49484452 IHDR ヘッダーチャンクを識別します
8 0x01 1 画像の幅は1ピクセルです
12 0x01 1 画像の高さは1ピクセルです
16 0x08 8 ピクセルあたり8ビット(チャンネルあたり)
17 0x02 2 カラータイプ2(RGB/トゥルーカラー)
18 0x00 0 圧縮方法 0 (許容される値のみ)
19 0x00 0 フィルタ方法 0(有効な値のみ)
20 0x00 0 インターレースなし
21 0x907753DE チャンクの種類と内容のCRC(長さは除く)
IDATチャンク
チャンク内のオフセット 16進値 意味
0 0x0C IDATチャンクは12バイトのコンテンツを持ちます
4 0x49444154 データチャンクを識別します
8 0x08 256バイトのウィンドウを使用するDEFLATE圧縮方式[ 52 ]
9 0xD7 ZLIB FCHECK値、辞書未使用、最大圧縮アルゴリズム[ 52 ]
10 0x63F8CFC00000 静的ハフマン符号を使用した圧縮DEFLATEブロック。0x00 0xFF 0x00 0x00 [ 53 ]にデコードされます
16 0x03010100 ZLIBチェック値:非圧縮データのAdler-32チェックサム[ 52 ]
20 0x18DD8DB0 チャンクの種類と内容のCRC(長さは除く)

16進エディタのように表示されます。左側には16進形式でバイト値が表示され、右側にはISO-8859-1の対応する文字が表示されます。認識されない文字と制御文字はピリオドに置き換えられています。さらに、PNGシグネチャと個々のチャンクは色分けされています。人間が読める型名(この例ではPNG、IHDR、IDAT、IEND)が付いているため、簡単に識別できます。

利点

PNGを使用する理由

  • 移植性:転送はソフトウェアおよびハードウェアプラットフォームに依存しません
  • 完全性: トゥルーカラー、インデックスカラー、グレースケール画像を表現できます。
  • シリアルコーディングとデコード:データ ストリームをシリアルに生成して読み取ることができます。つまり、データ ストリームの形式は、シリアル通信を介してその時点で画像の生成と視覚化に使用されます。
  • プログレッシブ プレゼンテーション: 最初はイメージ全体の近似値であるデータ フローを送信し、データ フローが受信されるにつれて徐々に改善されるようにします。
  • 伝送エラーに対する健全性: データ ストリームの伝送エラーを正しく検出します。
  • ロスレス: ロスなし: フィルタリングと圧縮によりすべての情報が保持されます。
  • 効率: プログレッシブ画像プレゼンテーション、圧縮、フィルタリングは、効率的なデコードとプレゼンテーションを目指します。
  • 圧縮: 画像を効率的かつ一貫して圧縮できます。
  • 容易さ: 標準の実装は簡単です。
  • 互換性: 標準に準拠するどの PNG デコーダーでも、すべての PNG データ ストリームを読み取ることができます。
  • 柔軟性: 以前のポイントに影響を与えることなく、将来の拡張やプライベートな追加が可能になります。
  • 法的制限の自由: 使用されるアルゴリズムは無料でアクセス可能です。

他のファイル形式との比較

グラフィックス交換フォーマット (GIF)

  • 小さな画像の場合、GIF はPNG よりも高い圧縮率を実現できます (以下のファイル サイズに関するセクションを参照)。
  • 上記の場合を除き、ほとんどの画像では、GIF ファイルのサイズはインデックス付き PNG 画像よりも大きくなります。
  • PNG では、アルファ チャンネルの透明度など、GIF よりもはるかに幅広い透明度オプションが提供されます。
  • GIFは8ビットのインデックスカラーに制限されていますが、PNGは24ビット(チャネルあたり8ビット)と48ビット(チャネルあたり16ビット)のトゥルーカラーを含む、はるかに広い範囲の色深度を提供し、より高い色精度、より滑らかなフェードなどを可能にします。[ 54 ]アルファチャンネルが追加されると、最大64ビット/ピクセル(圧縮前)が可能になります。
  • 画像を PNG 形式から GIF に変換する場合、 PNG 画像に 256 色以上が含まれていると、ポスタリゼーションにより画像の品質が低下する可能性があります。
  • GIF は本質的にアニメーション画像をサポートします。PNG は拡張機能を介してのみアニメーションをサポートします (上記のアニメーションのセクションを参照)。

PNG画像は古いブラウザではサポートが限られています。特にIE6ではPNGのサポートが限定的です。[ 55 ]

JPEG

JPEGの非可逆圧縮とPNGの可逆圧縮を比較した合成画像。PNG画像は単色であるため、この種の画像データの背景にはJPEGアーティファクトが容易に確認できます

JPEG (Joint Photographic Experts Group)形式は写真画像(および写真風画像)の場合、PNGよりもファイルサイズが小さくなります。これは、JPEGが写真画像データ向けに特別に設計された非可逆符号化方式を使用しているためです。写真画像データは、通常、ソフトで低コントラストのトランジションと、ある程度のノイズなどの不規則な構造が特徴です。このような画像に高品質のJPEGではなくPNGを使用すると、画質の向上はほとんどなく、ファイルサイズが大幅に増加します。一方、テキスト、線画、グラフィック(急激なトランジションと広い単色領域を含む画像)を含む画像を保存する場合、PNG形式はJPEGよりも画像データを圧縮できます。さらに、PNGはロスレスであるのに対し、JPEGは高コントラスト領域の周囲に視覚的なアーティファクトを生成します(このようなアーティファクトはJPG圧縮の設定に依存し、低品質(高圧縮)設定では顕著になる可能性があります)。画像に急激なトランジションと写真的な部分の両方が含まれる場合は、2つの効果のどちらかを選択する必要があります。JPEGは透明度をサポートしていません。

JPEGの非可逆圧縮には世代損失という問題もあります。これは、画像をデコードと再エンコードを繰り返して保存するたびに情報が失われ、画像が劣化することを意味します。PNGは可逆圧縮であるため、編集用の画像を保存するのに適しています。PNGは写真画像を圧縮する際にかなり効率的ですが、写真画像専用に設計された可逆圧縮形式、例えばロスレスWebPAdobe DNG(デジタルネガ)などがあります。ただし、これらの形式は広くサポートされていないか、独自仕様です。画像をロスレスで保存し、配布時にのみJPEG形式に変換することで、世代損失を回避することができます。

PNG仕様にはデジタルカメラなどのソースからのExif画像データを埋め込むための標準は明示的に含まれていませんが、PNGにEXIFデータを埋め込むための推奨される方法は、重要でない補助チャンクラベルを使用することですeXIf[ 56 ]

初期のウェブブラウザはPNG画像をサポートしておらず、JPEGとGIFが主な画像形式でした。GIFは色深度が限られているため、ウェブページ用のグラデーションを含む画像をエクスポートする際にはJPEGがよく使用されていました。しかし、JPEG圧縮ではグラデーションがわずかにぼやけてしまいます。PNG形式は、ファイルサイズを小さく抑えながら、与えられたビット深度で可能な限り正確にグラデーションを再現します。ウェブブラウザによるPNG形式のサポートが向上するにつれて、PNGは小さなグラデーション画像に最適な選択肢となりました。最近のブラウザでは、グラデーションはCSSを使用して作成できるため、グラデーションを表示するために画像はまったく必要ありません。

JPEG-LS

JPEG-LSはJoint Photographic Experts Groupによる画像フォーマットですが、前述の他の非可逆JPEGフォーマットほ​​ど広く知られておらず、サポートも少ないです。PNGと直接比較でき、標準テスト画像セットがあります。[ 57 ] Waterloo Repertoire ColorSet(JPEG-LS適合性テストセットとは無関係の標準テスト画像セット)では、JPEG-LSは一般的にPNGよりも10~15%優れたパフォーマンスを発揮しますが、画像によってはPNGの方が50~75%程度大幅に優れたパフォーマンスを発揮します。[ 58 ]したがって、これらのフォーマットの両方が選択肢であり、ファイルサイズが重要な基準である場合は、画像に応じて両方を検討する必要があります

JPEG XL

JPEG XLは、PNGなどのロスレス形式を置き換えるために開発された、大幅に改良されたロスレスまたはロッシー形式のもう1つの形式ですが、残念ながらサポートがはるかに少ないです。[ 59 ] JPEG XLはJPEGよりも50%以上小さく、ロスレスでありながらそれを実現するため、PNGよりもさらに小さくなります。[ 60 ]また、ハイダイナミックレンジ、広色域、大きな色深度をサポートしています。[ 61 ] JPEG XLはデコードも非常に効率的で、置き換えようとしている形式からのスムーズな移行を提供し、JPEGからロスレスに変換できます。また、忠実度を損なうことなく圧縮することにも優れています。[ 62 ]

TIFF

タグイメージファイルフォーマット(TIFF)は、非常に幅広いオプションを備えたフォーマットです。そのため、TIFFはプロ仕様の画像編集アプリケーション間のデータ交換のための汎用フォーマットとして便利ですが、アプリケーションへのサポート追加ははるかに大きな作業となり、画像操作を伴わないアプリケーション(Webブラウザなど)ではほとんどサポートされていません。また、高い拡張性は、ほとんどのアプリケーションが可能な機能のサブセットしか提供していないことを意味し、ユーザーの混乱や互換性の問題を引き起こす可能性があります

TIFFで使用される最も一般的な汎用ロスレス圧縮アルゴリズムは、Lempel-Ziv-Welch(LZW)です。この圧縮技術はGIFでも使用されており、2003年まで特許で保護されていました。TIFFは、PNGで使用される圧縮アルゴリズム(圧縮タグ0008 16Adobeスタイル」)もサポートしており、その利用度とアプリケーションによるサポートは中程度です。TIFFは、 CCITT Group IVなどの特殊用途のロスレス圧縮アルゴリズムも提供しており、これらのアルゴリズムは、PNGの圧縮アルゴリズムよりも2値画像(例:ファックスや白黒テキスト)を効率的に 圧縮できます。

PNGは非プリマルチプライアルファのみをサポートしています[ 38 ]が、TIFFは「関連付けられた」(プリマルチプライされた)アルファもサポートしています。

WebP

WebPはGoogleによって発明されたフォーマットで、PNG、JPEG、GIFの置き換えを目的としています。[ 63 ] WebPファイルは非可逆圧縮と可逆圧縮の両方が可能ですが、PNGは可逆圧縮のみ可能です。WebPはアニメーションもサポートしており、これは以前はGIFファイルでしか実現できませんでした。[ 64 ]

しかし、WebPがPNGに対して持つ主な利点は、ファイルサイズが大幅に削減され、ウェブサイトに埋め込む際の読み込み時間が短縮されることです。Googleは、ロスレスWebP画像はPNGファイルよりも26%サイズが小さいと主張しています。[ 65 ]

WebPはPNGとは異なり、様々な画像編集プログラムやソーシャルメディアウェブサイトと互換性がないという批判を受けています。[ 66 ]また、WebPはすべてのウェブブラウザでサポートされているわけではないため、ウェブ画像ホスティング業者はユーザーに表示するためのフォールバック画像を作成する必要があり、WebPの潜在的なストレージ節約効果が打ち消されてしまいます。[ 64 ]

AVIF

AVIFは、 Alliance for Open Mediaによって開発された画像フォーマットです。AVIFは、PNG、 GIFWebPなどの他の画像コーデックの欠点を補うために財団によって設計されました。[ 67 ]

AVIFは一般的にWebPやPNGよりもサイズが小さいです。[ 68 ] AVIFはアニメーションをサポートしていますが、以前はPNGはサポートしていませんでした。[ 69 ]

しかし、WebPと同様に、AVIFはPNGよりもサポートされているアプリケーションが少ない。[ 69 ]

ソフトウェアサポート

PNG形式の公式リファレンス実装は、プログラミングライブラリlibpngです。[ 70 ]これは、寛容なフリーソフトウェアライセンスの条件に基づいてフリーソフトウェアとして公開されています。そのため、通常、フリーオペレーティングシステムでは重要なシステムライブラリとして使用されています

PNG のビットマップ グラフィック エディターのサポート

PNG形式は、Adobe PhotoshopCorelPhoto-PaintおよびPaint Shop ProGIMPGraphicConverterHelicon FilterImageMagickInkscapeIrfanView、Pixel image editor、Paint.NETXara Photo & Graphic Designerなど、多くのグラフィックプログラム( Canvaなどのオンライングラフィックデザインプラットフォームを含む)で広くサポートされています。PNGをサポートする一般的なオペレーティングシステムにバンドルされているプログラムには、MicrosoftPaintApplePhotos / iPhotoPreviewなどがあり、GIMPは一般的なLinuxディストリビューションにバンドルされていることがよくあります。

Adobe Fireworks(旧称Macromedia)は、PNGをネイティブファイル形式として使用しているため、他の画像エディタやプレビューユーティリティでフラット化された画像を表示できます。ただし、Fireworksはデフォルトでレイヤー、アニメーション、ベクターデータ、テキスト、エフェクトのメタデータも保存します。これらのファイルは直接配布しないでください。Fireworksは、Webページなどでの使用を想定し、余分なメタデータを削除した最適化されたPNG形式で画像をエクスポートできます。

PNGのWebブラウザサポート

PNGのサポートは1997年にInternet Explorer 4.0b1(NTでは32ビットのみ)とNetscape 4.04で初めて登場しました。[ 71 ]

フリーソフトウェア財団[ 72 ]ワールドワイドウェブコンソーシアム(W3C)[ 73 ] 、 gif2pngなどのツール[ 74 ]、Burn All GIFsなどのキャンペーン[ 75 ]による呼びかけにもかかわらず、Internet Explorerのサポートが遅れ、バグが多かったため、特に透明性に関して、ウェブサイトでのPNGの採用はかなり遅れました。[ 76 ] PNGは2018年以降ウェブ上で最も使用されている画像ファイル形式です。 [ 77 ]

PNG対応ブラウザには、Apple SafariGoogle ChromeMozilla FirefoxOperaCaminoInternet ExplorerMicrosoft Edgeなど多数あります。詳細な比較については、「ウェブブラウザの比較(画像形式のサポート)」をご覧ください。

特にInternet Explorer(Windows)9.0(2011年リリース)以下のバージョンでは、PNG画像を正しくレンダリングできないという問題が多数ありました。[ 78 ]

  • 4.0では大きなPNGファイルでクラッシュします。[ 79 ]
  • 4.0には.pngファイルを表示する機能は含まれていませんが[ 80 ]、レジストリの修正があります。[ 78 ]
  • 5.0と5.01ではOBJECTのサポートが壊れています。[ 81 ]
  • 5.01はWindows 98で黒(または濃い灰色)の背景にパレット画像を印刷しますが、色が大幅に変更されることもあります。[ 82 ]
  • 6.0では4097バイトまたは4098バイトのPNG画像を表示できません。[ 83 ]
  • 6.0では、長さがゼロのIDATチャンクを1つ以上含むPNGファイルを開くことができません。この問題は、セキュリティ更新プログラム947864(MS08-024)で初めて修正されました。詳細については、Microsoft Knowledge Baseの次の記事をご覧ください:947864 MS08-024: Internet Explorer用の累積的なセキュリティ更新プログラム。[ 84 ]
  • 6.0ではPNGの表示能力が完全に失われることがあります。しかし、いくつかの修正が加えられています。[ 85 ]
  • 6.0以下ではアルファチャンネルの透明度サポートが壊れています(代わりにデフォルトの背景色が表示されます)。[ 86 ] [ 87 ] [ 88 ]
  • 7.0以下では、8ビットアルファ透明度と要素の不透明度(CSS – フィルター:アルファ(不透明度=xx))を組み合わせると、部分的に透明な部分を黒く塗りつぶすことはできません。[ 89 ]
  • 8.0以下ではガンマサポートが不安定または壊れています。[ 78 ]
  • 8.0以下では色補正はサポートされていません。[ 78 ]

PNGアイコンのオペレーティング システム サポート

PNGアイコンは、少なくとも1999年以降、GNOMEなどのデスクトップ環境で、ほとんどのLinuxディストリビューションでサポートされています。[ 90 ] 2006年には、Microsoft WindowsがWindows VistaでPNGアイコンのサポートを導入しました。[ 91 ] PNGアイコンは、 AmigaOS 4AROSmacOSiOSMorphOSでもサポートされています。さらに、AndroidではPNGが広く使用されています。

ファイルサイズと最適化ソフトウェア

PNGファイルのサイズは、エンコードや圧縮の方法によって大きく異なります。この点については「PNG: The Definitive Guide」で解説されており、多くのヒントが紹介されています。 [ 58 ]

GIFと比較して

GIFファイルと比較して、同じ情報(256色、補助チャンク/メタデータなし)を持つPNGファイルは、効果的な圧縮ツールで圧縮すると、通常GIF画像よりも小さくなります。ファイルと圧縮ツールによって、PNGはやや小さく(10%)、大幅に小さく(50%)、やや大きく(5%)なりますが、大きな画像の場合は大幅に大きくなることはほとんどありません[ 58 ] 。これは、PNGのDEFLATEがGIFのLZWに比べてパフォーマンスが高いこと、およびPNGの予測フィルタの追加された事前圧縮層が2次元画像構造を考慮してファイルをさらに圧縮するためです。フィルタ処理されたデータはピクセル間の差をエンコードするため、すべての可能な値に分散されるのではなく、0に近い値に集まる傾向があり、DEFLATEによってより簡単に圧縮されます。ただし、Adobe PhotoshopCorelDRAWMS Paintの一部のバージョンではPNG圧縮率が低いため、GIFの方が効率的であるという印象を与えます[ 58 ]

ファイルサイズの要因

PNG ファイルのサイズは、さまざまな要因により異なります。

色深度
色深度は、1ピクセルあたり1~64ビットの範囲です。
補助チャンク
PNG はメタデータをサポートしています。これは編集には便利ですが、Web サイトなどの表示には必要ありません。
インターレース
Adam7アルゴリズムの各パスは個別にフィルタリングされるため、ファイルサイズが増加する可能性があります。[ 58 ]
フィルター
圧縮前の段階では、各行は予測フィルターによってフィルタリングされます。予測フィルターは行ごとに変化する可能性があります。最終的なDEFLATEステップは画像全体のフィルタリングされたデータに対して実行されるため、行ごとに最適化することはできません。そのため、各行のフィルターの選択は、ヒューリスティックスは存在するものの、潜在的に非常に多様です。[注1 ]
圧縮
追加の計算により、DEFLATE圧縮機はより小さなファイルを生成できます

このように、高色深度、最大限のメタデータ(色空間情報と表示に影響しない情報を含む)、インターレース、圧縮速度の間でファイルサイズのトレードオフが生じます。これらの条件はすべて、低色深度、補助チャンクが少ないか全くない、インターレースなし、調整されているものの計算量の多いフィルタリングと圧縮を伴う、大きなファイルを生成します。目的が異なれば、異なるトレードオフが選択されます。最大のファイルはアーカイブと編集に最適かもしれませんが、簡素化されたファイルはウェブサイトでの使用に最適です。同様に、ファイルを繰り返し編集して保存する場合は高速だが低圧縮が好まれ、ファイルが安定している場合(アーカイブまたは投稿など)は低速だが高圧縮が好まれます。インターレースはトレードオフです。大きなファイルの初期レンダリングを劇的に高速化します(レイテンシが改善されます)が、特に小さなファイルでは、ファイルサイズが大きくなり(スループットが低下し)、メリットはほとんどありません。[ 58 ]

非可逆PNG圧縮

PNGは可逆形式ですが、PNGエンコーダーは画像データを非可逆方式で前処理することでPNG圧縮率を向上させることができます。例えば、トゥルーカラーPNGを256色に量子化すると、インデックスカラータイプを使用でき、ファイルサイズを削減できる可能性があります。[ 92 ]

画像編集ソフトウェア

PNGファイルを保存する際、プログラムによっては他のプログラムよりも効率的なものがあります。これは、プログラムで使用されるPNG圧縮の実装に関係しています

多くのグラフィックプログラム(AppleのPreviewソフトウェアなど)は、PNGファイルに大量のメタデータと色補正データを保存しますが、これらは通常、Web表示には不要です。Adobe Fireworksの最適化されていないPNGファイルも、対応するエディタで画像を編集できるようにするためのオプションが含まれているため、この点で悪名高いです。また、CorelDRAW(バージョン11以降)は、Internet Explorer(バージョン6~8)で開けないPNGファイルを生成することがあります。

Adobe Photoshopの CS Suite では、「Web 用に保存」機能 (明示的な PNG/8 の使用も可能) を使用する場合の PNG ファイルのパフォーマンスが向上しました。

Adobe Fireworksは、デフォルトで多くのプログラムよりも大きなPNGファイルを保存します。これは、 Fireworksの保存形式の仕組みに起因しています。Fireworksの保存機能で生成される画像には、レイヤーとベクター情報のすべてを含む、大きなプライベートチャンクが含まれます。これにより、ロスレス編集が可能になります。「エクスポート」オプションを使用して保存した場合、FireworksのPNGファイルは他の画像エディタで生成されるPNGファイルと遜色ありませんが、フラット化されたビットマップとしてしか編集できません。Fireworksは、サイズが最適化されたベクター編集可能なPNGファイルを保存することができません。

その他の注目すべき低品質の PNG 圧縮ツールの例としては、次のものがあります。

  • Windows XP 用 Microsoft ペイント
  • Microsoft Picture It! フォト プレミアム 9

圧縮率が低いと PNG ファイルのサイズは大きくなりますが、画像の品質や他のプログラムとのファイルの互換性には影響しません。

トゥルーカラー画像の色深度を8ビットパレット(GIFなど)に減色すると、結果として得られる画像データは通常、はるかに小さくなります。そのため、トゥルーカラーPNGは通常、減色されたGIFよりも大きくなりますが、PNGは減色バージョンを同程度のサイズのパレットファイルとして保存できます。逆に、一部のツールでは、画像をPNGとして保存する際に、元のデータが8ビットカラーのみを使用していても自動的にトゥルーカラーとして保存するため、ファイルサイズが不必要に大きくなります。[ 58 ]これらの要因により、PNGファイルは同等のGIFファイルよりも大きいという誤解が生じる可能性があります。

最適化ツール

PNGファイルを最適化するには、さまざまなツールが利用可能です。これらのツールは以下の方法で最適化を行います

  • (オプション)補助チャンクを削除する
  • 色深度を減らすには、次のいずれかを実行します。
    • 画像の色数が256色以下の場合は、RGBではなくパレットを使用します。
    • 画像に2色、4色、または16色が含まれている場合は、より小さなパレットを使用するか、
    • (オプション)元の画像のデータの一部を損失なく破棄する
  • 行ごとのフィルタ選択の最適化、および
  • DEFLATE圧縮を最適化します。

ツールリスト

  • pngcrushは、最も古い人気のあるPNG最適化ツールです。フィルタ選択と圧縮引数を複数回試行し、最終的に最小のものを選択します。この動作モデルは、ほぼすべてのPNG最適化ツールで使用されています
  • advpngと、AdvanceCOMPパッケージに含まれる同様のadvdefユーティリティは、PNG IDATを再圧縮します。選択した圧縮レベルに応じて、速度とファイルサイズのバランスを考慮した異なるDEFLATE実装が適用されます。レベル1ではzlib、レベル2ではlibdeflate、レベル3では7-zipLZMA DEFLATE、レベル4ではzopfliが使用されます。
  • pngoutは、作者独自のデフレータ(作者のzipユーティリティkzipと同じ)を使用して作成されており、減色/フィルタリング機能はすべて保持されています。ただし、pngoutでは、1回の実行で複数のフィルタの試行を行うことはできません。商用GUI版のpngoutwinを使用するか、ラッパーを使用して試行を自動化するか、フィルタを行単位で保持したまま独自のデフレータを使用して再圧縮することをお勧めします。[注2 ]
  • zopflipngも独自のデフレータである zopfli を使って作成されました。pngcrush の最適化機能(自動テスト機能を含む)をすべて備えながら、非常に優れたデフレータ機能を提供しますが、動作は遅いです。

それぞれの機能の簡単な比較を以下に示します。

オプティマイザーチャンク除去色削減フィルタリングフィルターの再利用[注3 ]1回の実行でフィルターを複数回試すデフレーター[注4 ]
advpngはいいいえ[注5 ]0いいえ該当なし[注 6 ](複数)
advdefいいえいいえ以前のフィルターセットを再利用します常に該当なし(複数)
pngcrushはいはい0~4または適応型いいえはいzlib
pngoutはいはい0~4または適応型はい[注2 ]いいえkzip
zopflipngはいはい0~4、または2つの異なるアルゴリズムによる適応型、あるいは総当たり方式はいはいzopfli

が利用可能になる以前はzopflipng、PNG の最適化を行うための実用的な方法として、最適な圧縮を実現するために、2 つのツールを順番に組み合わせて使用​​することが推奨されていました。1 つはフィルタを最適化し(補助的なチャンクを削除)、もう 1 つは DEFLATE を最適化するツールです。pngout は両方のツールを提供していますが、1 回の実行で指定できるフィルタの種類は 1 つだけです。そのため、ラッパーツールと併用するか、 のように再デフレータとして機能する pngcrush [注 2] と組み合わせて使用​​する必要ありますadvdef

補助チャンクの削除

補助チャンクを削除するために、ほとんどのPNG最適化ツールはPNGファイルからすべての色補正データ(ガンマ、ホワイトバランス、ICCカラープロファイル、標準RGBカラープロファイル)を削除する機能を備えています。これにより、ファイルサイズが大幅に小さくなることがよくあります。例えば、以下のコマンドラインオプションでこれを実現しpngcrushます

pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB入力ファイル.png 出力ファイル.png

フィルタ最適化

pngcrush、、pngoutおよびzopflipngすべては、フィルタタイプ0~4のいずれかをグローバルに適用する(すべての行に同じフィルタタイプを使用する)か、「疑似フィルタ」(番号5)を使用するオプションを提供します。疑似フィルタは、適応アルゴリズムを使用して各行にフィルタタイプ0~4のいずれかを選択します。zopflipngフィルタリングを最適化しようとするブルートフォース検索を含む、3つの異なる適応型手法を提供します。[注7 ]

pngout入力画像に存在するラインごとのフィルタセットを zopflipng保存/再利用するオプションを提供します[2 ] [注8 ] 。

pngcrushは、zopflipng1回の実行で複数のフィルタ戦略を試し、最適なものを選択するオプションを提供します。フリーウェアのコマンドライン版ではpngoutこの機能は提供されていませんが、商用版ではpngoutwin提供されています。[注 9 ]

DEFLATE最適化

ZopfliLZMA SDKは、パフォーマンスを犠牲にしてzlibリファレンス実装よりも高い圧縮率を実現できるDEFLATE実装を提供しています。AdvanceCOMPは、これらのライブラリのいずれかを使用してPNGファイルを再圧縮できます。さらに、PNGOUTには独自のDEFLATE実装が含まれてます advpngadvdef

advpngフィルターを適用するオプションがなく、常にフィルター0をグローバルに適用します(画像データはフィルター処理されません)。そのため、画像にフィルター処理のメリットが顕著に現れる場合には使用すべきではありません。一方、advdef同じパッケージの はPNG構造を扱わず、再デフレーターとしてのみ機能し、既存のフィルター設定は保持されます。

アイコンの最適化

Windows Vista以降向けのアイコンにはPNGサブイメージが含まれている場合があるため、最適化はそれらにも適用できます。少なくとも1つのアイコンエディタ、Pixelformerは、 ICOファイルの保存時に特別な最適化パスを実行し、サイズを縮小すること ができます

macOS のアイコンにはPNG サブイメージも含まれている可能性がありますが、そのようなツールは利用できません。

参照

解説

  1. ^フィルタリングはデータの類似性を高め、圧縮率を高めるために使用されます。しかし、理論的には類似性の公式はなく、類似性と圧縮率の間に絶対的な関係もないため、圧縮を行わない限り、あるフィルタセットが他のフィルタセットよりも優れているかどうかを判断することはできません
  2. ^ a b c d以前のフィルターセットを再利用するために使用pngout -f6
  3. ^このような機能を提供するツールは、PNG ファイルの純粋な再デフレータとして機能する可能性があります。
  4. ^ deflateのリファレンス実装であるzlibでは、最大圧縮レベルでも圧縮率は最適ではありません。Zopfli、 7 -zipのzip形式 pngoutを参照してください。
  5. ^ advpng は色の削減をサポートしていないだけでなく、色空間が削減された画像でも失敗します。
  6. ^ Advpng はフィルター 0 をグローバルに適用することしかできないため、yes でも​​ no でもなく、N/A になります。
  7. ^[pngcrush|pngout] -fまたはzopflipng --filters
  8. ^zopflipng --filters=p
  9. ^pngoutwinの最適化設定ダイアログでは、ユーザーにフィルタ戦略の選択肢を提供します

参考文献

  1. ^ a b c「ISO/IEC 15948:2004 – 情報技術 – コンピュータグラフィックス及び画像処理 – ポータブルネットワークグラフィックス(PNG):機能仕様」国際標準化機構(ISO)2004年3月3日。2011年2月19日閲覧
  2. ^ 「著作権通知、免責事項、ライセンス - PNGリファレンスライブラリライセンスバージョン2」(TXT) . libpng.org . 2000年7月1日。
  3. ^ a bロエロフス、グレッグ (2010 年 5 月 29 日)。「PNGの歴史」libpng 2010 年10 月 20 日に取得
  4. ^ W3C 2003、1範囲
  5. ^ 「オックスフォード上級学習者辞典によるPNG名詞の定義」オックスフォード学習者辞典2018年1月21日閲覧
  6. ^ 「ポータブルネットワークグラフィック .PNG ファイルの説明」surferhelp.goldensoftware.com . 2022年8月12日閲覧
  7. ^ T. Boutell; et al. (1997年3月). PNG (Portable Network Graphics) 仕様 バージョン1.0 . ネットワークワーキンググループ. doi : 10.17487/RFC2083 . RFC 2083 .情報。セクション3。
  8. ^ 「新しいメディアタイプimage/pngの登録」IANA . 1996年7月27日.
  9. ^ 「Compu$erveによるGIFライセンスに関する公式発表」groups.google.com . 2025年1月8日閲覧
  10. ^ Limer, Eric (2019年10月30日). 「GIFは死んだ。GIFよ永遠なれ」 .ポピュラーメカニクス. 2022年11月21日閲覧
  11. ^ Roelofs 1999、第7章 ポータブルネットワークグラフィックス形式の歴史。sfnエラー: ターゲットなし: CITEREFRoelofs1999 (ヘルプ)
  12. ^ a b c d W3C 2003、11.2.2画像IHDRヘッダー
  13. ^ Roelofs, Greg (2011年9月29日). 「Portable Network Graphics (PNG) 仕様と拡張機能」 . libpng . 2021年8月15日閲覧
  14. ^ T. Boutell; et al. (1997年3月). PNG (Portable Network Graphics) 仕様 バージョン1.0 . ネットワークワーキンググループ. doi : 10.17487/RFC2083 . RFC 2083 .参考情報。8.4節。PNG 自体は厳密に単一画像形式です。(...) 将来的には、PNGをベースにした複数画像形式が定義される可能性があります。そのような形式は、別のファイル形式として扱われます。
  15. ^ a b「PNG第3版の説明」 W3C GitHub 2025年2月26日. 2025年6月25日閲覧
  16. ^ 「Portable Network Graphics (PNG)仕様(第3版)がW3C勧告になりました」。ワールド・ワイド・ウェブ・コンソーシアム。2025年6月24日。2025年6月25日時点のオリジナルよりアーカイブ。 2025年6月25日閲覧
  17. ^ Chris Blume (2025年6月24日). 「PNGが復活!」 ProgramMax . 2025年6月24日時点のオリジナルよりアーカイブ。 2025年6月25日閲覧
  18. ^ T. Boutell; et al. (1997年3月). PNG (Portable Network Graphics) 仕様 バージョン1.0 . ネットワークワーキンググループ. doi : 10.17487/RFC2083 . RFC 2083 .参考情報
  19. ^ W3C 2003、5.2 PNG署名
  20. ^ W3C 2003、5.3チャンクレイアウト
  21. ^ a bマヌル島ラフロイグ (2017 年 10 月 31 日)。PoC または GTFO。スターチプレスは不要です。ISBN 9781593278984 各チャンクは、長さ、チャンクタイプ、チャンクデータ、32ビットCRCの4つの部分で構成されます。長さは、チャンクデータフィールドのみのサイズを示す32ビットの符号なし整数です
  22. ^ラフロイグ、マヌル(2017年10月31日)。「PoC or GTFO(権力を握れ、さもなくば出て行け) 」 No Starch Press。ISBN 9781593278984 チャンク タイプは、IHDR、IDAT、IEND などの 32 ビットの FourCC コードです。
  23. ^ W3C 2003、11.2.4画像データIDAT
  24. ^ W3C 2003、11.2.5画像トレーラーIEND
  25. ^ W3C 2003、11.3.3.3埋め込みICCiCCPプロファイル
  26. ^ 「PNG仕様(第3版)、cICP ビデオ信号タイプ識別のためのコーディング非依存コードポイント」w3.org . 2023年9月21日。
  27. ^ 「PNG形式へのHDR画像のサポートの追加」。W3C Color on the Webコミュニティグループ。2023年5月3日。
  28. ^ Thomas Kopp (2008年4月17日). 「PNGデジタル署名:拡張仕様」 .
  29. ^ 「ポータブル ネットワーク グラフィックス (PNG) 仕様 (第 3 版)」
  30. ^ 「PNG 1.2仕様の拡張、バージョン1.5.0」。ftp -osl.osuosl.org
  31. ^ W3C 2003、11.3.3.2画像ガンマgAMA
  32. ^ W3C 2003、11.3.5.3物理pHYsなピクセル寸法
  33. ^ W3C 2003、11.3.3.4有効sBITビット
  34. ^ 「PNG(Portable Network Graphics)仕様\バージョン1.0」w3.org . 2022年5月30日閲覧4.2.6. sBIT 有効ビット、合計13バイト - カラータイプ2と3は合計6バイト
  35. ^ Roelofs 2003 Significant Bits (sBIT)「グレースケール画像は最も単純です。sBITには、ソースデータの有効ビット数を示す1バイトが含まれます。」
  36. ^ 「PNG 仕様: チャンク仕様」
  37. ^ 「2006 年の PNG ニュース」。Libpng.org。
  38. ^ a bPNG仕様:根拠」。w3.org
  39. ^ W3C 2003、9フィルタリング
  40. ^ 「フィルタアルゴリズム」。PNG仕様
  41. ^ Paeth, Alan W. (1991). Arvo, James (編). 「Image File Compression Made Easy」. Graphics Gems 2. Academic Press, サンディエゴ: 93–100 . doi : 10.1016/B978-0-08-050754-5.50029-3 . ISBN 0-12-064480-0アクセス不可アイコン
  42. ^クロッカー、リー・ダニエル1995年7月)「PNG:ポータブルネットワークグラフィックフォーマット」ドクタードブズジャーナル20 232):36–44
  43. ^ 「PNG入門」 nuwen.net 2010年10月20日閲覧
  44. ^ 「HTML5、CSS3などのサポートテーブルを使用できますか?」 caniuse.com . 2021年2月6日閲覧
  45. ^ 「Web開発者とデザイナーのためのiOS 8とiPhone 6:SafariとネイティブWebアプリの次なる進化」 mobilexweb.com、2014年9月17日。 2014年9月24日閲覧
  46. ^ scroggo (2017年3月14日). “chromium / chromium / src / 7d2b8c45afc9c0230410011293cc2e1dbb8943a7” . chromium.googlesource.com . 2017年3月31日閲覧
  47. ^ chrome-cron; et al. (2017年3月27日). "chromium / chromium / src / 59.0.3047.0..59.0.3053.0" . chromium.googlesource.com . 2017年3月31日閲覧
  48. ^ 「Dev.Opera — Chromium 59とOpera 46の新機能」 . dev.opera.com . 2022年9月11日閲覧
  49. ^ “Vote failed: APNG 20070405a” . 2007年4月20日. 2008年2月3日時点のオリジナルよりアーカイブ
  50. ^ 「PNG Group animation proposal comparison + test-software」 . xs4all.nl . 2009年1月24日時点のオリジナルよりアーカイブ
  51. ^ 「PNG仕様(第3版)、 APNG :フレームベースのアニメーション」。w3.org 。2025年6月24日。
  52. ^ a b c P. Deutsch; JL. Gailly (1996年5月). ZLIB圧縮データフォーマット仕様バージョン3.3 . ネットワークワーキンググループ. doi : 10.17487/RFC1950 . RFC 1950 .参考情報
  53. ^ P. Deutsch (1996年5月). DEFLATE圧縮データフォーマット仕様 バージョン1.3 . ネットワークワーキンググループ. doi : 10.17487/RFC1951 . RFC 1951参考情報
  54. ^ 「PNG機能の基本入門」 Libpng.org 2010年10月20日閲覧
  55. ^ 「GIF、PNG、JPG。どれを使えばいいの?」 Sitepoint.com、2009年8月3日。 2010年10月20日閲覧
  56. ^ 「PNG 1.2仕様の拡張、バージョン1.5.0」 。 2020年5月5日閲覧
  57. ^ 「T.87:連続階調静止画像のロスレスおよびニアロスレス圧縮 - ベースライン」国際電気通信連合。 2011年3月20日閲覧
  58. ^ a b c d e f g Roelofs 2003第9章 圧縮とフィルタリング
  59. ^ 「JPEG XLファイルフォーマット」 .米国議会図書館. 2025年1月1日閲覧。
  60. ^ 「AppleがJPEG XLを採用する理由と、それが写真に与える影響」 Petapixel 2024年9月18日。 2025年1月1日閲覧
  61. ^ 「JPEG XL 画像エンコーディング」 .米国議会図書館. 2025年1月1日閲覧。
  62. ^ 「JPEG XLと他の画像コーデックの比較」 Cloudinary 2020年5月26日。 2025年1月1日閲覧
  63. ^ "WebP" . www.loc.gov . 2023年4月13日. 2024年8月22日閲覧
  64. ^ a b Ellis, Matt (2021年2月22日). 「WebPとは何か?この次世代画像フォーマットの長所と短所」 . 99designs . 2024年8月22日閲覧
  65. ^ 「Web用の画像フォーマット | WebP」 . Google for Developers . 2024年8月22日閲覧。
  66. ^ Wes Fenlon (2023年4月28日). 「なぜ今、こんなに多くの迷惑なWebPに対処しなければならないのか」 . PC Gamer . 2024年8月22日閲覧
  67. ^ 「AVIF:次世代の画像ファイルフォーマットの登場」 Alliance for Open Media、2023年11月8日。 2024年9月26日閲覧
  68. ^ 「PNG vs AVIF: 究極の画像フォーマットバトル | Coconut©」www.coconut.co . 2024年9月26日閲覧
  69. ^ a b「AVIFとWebP:4つの主な違いと選び方」Cloudinary . 2024年9月26日閲覧
  70. ^ "libpng" . 2013年7月13日閲覧
  71. ^ 「PNG画像を用いたデータ表示」オレゴン水科学センター、2006年2月16日。2008年8月20日時点のオリジナルよりアーカイブ。 2003年10月21日閲覧
  72. ^ 「GNU WebページにGIFファイルが存在しない理由」 GNUオペレーティングシステム2008年12月16日。
  73. ^ 「PNGファクトシート」 .ワールドワイドウェブコンソーシアム. 1996年10月7日.
  74. ^ 「gif2png 2.5.11のリソースページ」 . catb.org .
  75. ^ 「Burn All GIFs」 . burnallgifs.org .
  76. ^ 「Internet Explorer の PNG 透過性」 PC Magazine 2004 年 10 月 5 日。
  77. ^ 「ウェブサイト用画像ファイル形式の使用統計の年次推移w3techs.com
  78. ^ a b c d「PNGをサポートするブラウザ」 2009年3月14日。
  79. ^ 「Fireworks PNGファイルをクリックして表示するとWindowsエクスプローラーがクラッシュする」 Adobe Systems . 2007年6月5日。
  80. ^ 「Internet Explorer 4.0 で .png 画像を表示できない」。Microsoftサポート技術情報
  81. ^ 「オブジェクト タグ内の PNG がネガ画像として印刷される」。Microsoftサポート技術情報
  82. ^ 「PNG 画像が Internet Explorer 5.01 で正しく印刷されない」。Microsoftサポート技術情報
  83. ^ 「Internet Explorer 6 では一部の PNG 画像を表示できません」。Microsoftサポート技術情報
  84. ^ 「Internet Explorer 6 を使用して、長さがゼロの IDAT チャンクを 1 つ以上含む PNG ファイルを開くことはできません。 」 Microsoft サポート技術情報
  85. ^ 「PNG に関するよくある質問」
  86. ^ 「PhD: ポータブル ネットワーク グラフィックスの Web ブラウザーでの透明性が失われる」。Microsoftサポート技術情報
  87. ^ 「PNG ファイルは Internet Explorer では透明に表示されません」。Microsoftサポート技術情報
  88. ^ Lovitt, Michael (2002年12月21日). 「PNGによるクロスブラウザ可変不透明度:現実的な解決策」 . A List Apart . 2011年8月18日時点のオリジナルよりアーカイブ。 2009年7月21日閲覧
  89. ^ 「IE7 アルファ透明PNG + 不透明度」 Channel 9. 2011年8月27日時点のオリジナルよりアーカイブ2009年1月23日閲覧。
  90. ^ Fulbright, Michael (1999). 「GNOME 1.0 ライブラリロードマップ」 . 2010年1月30日時点のオリジナルよりアーカイブ。 2007年12月19日閲覧
  91. ^ 「Windows Vista – アイコン」。OOne 2007年。 2007年11月11日時点のオリジナルよりアーカイブ2007年11月12日閲覧。
  92. ^ 「PNGは非可逆圧縮形式になる可能性がある」 Pngmini.com 2014年2月1日閲覧

さらに詳しい情報