PNGとは徹底解説:可逆圧縮・アルファチャンネル・チャンク構造・最適化と他フォーマット比較
PNGとは — 概要
PNG(Portable Network Graphics)は、可逆(ロスレス)圧縮を採用するラスター画像フォーマットのひとつで、主にウェブとアプリケーションで広く使われています。MIMEタイプは image/png。ファイルシグネチャ(マジックナンバー)は 8 バイトで 89 50 4E 47 0D 0A 1A 0A です。PNGは、可逆圧縮・多様なカラーモード・アルファチャンネル・メタデータ埋め込み等をサポートし、GIFの代替として1990年代中盤に策定されました。
歴史的背景
PNGは1995〜1996年に「PNG Development Group」により仕様化されました。背景にはGIFに使われていたLZW圧縮アルゴリズムの特許問題(Unisysによるライセンス要求)があり、ロイヤリティフリーで機能的な代替を作る必要がありました。PNGはその結果として生まれ、以降オープンで広く採用されるフォーマットとなっています。
基本的な特徴
- 可逆圧縮(DEFLATE/zlib)を使用し、画質劣化なしにデータを保持できる。
- アルファチャンネル(透明度)をサポートし、部分透過を扱える。
- 多様なカラータイプ(グレースケール、インデックスカラー、真色情報など)とビット深度をサポート。
- チャンク(chunk)構造により拡張性があり、メタデータを埋め込める(tEXt, zTXt, iTXt, iCCP等)。
- インターレース(Adam7)をサポートし、段階的表示が可能。
色タイプとビット深度
PNGは用途に応じて複数の色タイプを提供します。仕様上の主な組み合わせとサポートされるビット深度は次の通りです。
- グレースケール(カラータイプ0):ビット深度 1,2,4,8,16
- インデックスカラー(パレット、カラータイプ3):ビット深度 1,2,4,8(パレットを参照)
- 真色(RGB、カラータイプ2):ビット深度 8,16
- グレースケール+アルファ(カラータイプ4):ビット深度 8,16
- 真色+アルファ(RGBA、カラータイプ6):ビット深度 8,16
業界用語として「PNG-8」「PNG-24」「PNG-32」といった呼び方がよく使われますが、それは厳密な仕様名ではなく、一般には「PNG-8 = 256色パレット(+透明)」「PNG-24 = 24ビット RGB(アルファなし)」「PNG-32 = 32ビット RGBA(アルファあり)」を指す便宜的な表現です。
圧縮・フィルタリングの仕組み
PNGの圧縮は2段構成です。まず画素データに対して行単位のフィルタ(None, Sub, Up, Average, Paeth の5種類)を適用して冗長性を減らし、その後にDEFLATEアルゴリズム(zlib ラッパー)で圧縮します。DEFLATE自体は可逆で、zlib/deflateの実装(例えば zlib ライブラリ)が用いられます。圧縮率を改善するための前処理やフィルタの自動選択は実装により異なり、最適化ツールでさらに圧縮効率を高めることができます。
チャンク構造(ブロック構造)
PNGファイルは「チャンク」と呼ばれる塊の連続で構成されます。各チャンクは長さ、種類(4文字)、データ、本体のCRCからなります。チャンクは「必須(critical)」と「任意(ancillary)」に分類されます。主要な必須チャンクは以下です。
- IHDR:画像幅・高さ・ビット深度・色タイプ・圧縮方法・フィルタ方法・インターレース方法を格納(最初に出現)。
- PLTE:パレット(インデックスカラー使用時に必要)。
- IDAT:実際の画像データ(複数のIDATチャンクが連続しても良い)。
- IEND:ファイル終端を示す(空のデータ)。
任意チャンクには gAMA(ガンマ情報)、sRGB(レンダリング意図)、iCCP(ICCプロファイル)、tEXt/zTXt/iTXt(テキストメタデータ)、tRNS(簡易透明情報)など多数があり、拡張性とメタデータ埋め込みを可能にしています。
透明度(アルファチャンネル)とtRNS
PNG最大の利点の一つがアルファチャンネルのサポートです。真色+アルファ(RGBA)では各ピクセルに完全な8/16ビットの透明度情報を持てます。パレット画像では透明度を個別のパレットエントリに紐付けるか、tRNSチャンクを使って特定の色を透過させることができます。tRNSは完全透過を指定するもので、部分透過(半透明)を表現するにはアルファチャネルが必要です。
注意点として、アルファ合成(プリマルチプライドか非プリマルチか)を扱う際に色が正しくレンダリングされないケースがあります。アプリケーション側の合成処理が前提に依存するため、編集ツールやブラウザで色むらや縁にハロー(縁取り)が発生することがあります。
インターレース(Adam7)
PNGはAdam7という7パスのインターレース方式をサポートします。これにより大きな画像を段階的に表示してユーザに素早いプレビューを与えることができますが、インターレース処理は圧縮効率や処理コストに影響するため、用途に応じて使い分けます。現在の高速回線・ブラウザ環境では必須ではありませんが、低帯域や遅延が大きい環境では有用です。
カラーマネジメントとガンマ
PNGにはガンマ補正や色空間に関連する複数のチャンクが存在します。gAMAチャンクはガンマ値を保存(仕様上は整数で 1/100000 単位)、sRGBチャンクはファイルがsRGBであることとレンダリング意図を示す簡易手段、iCCPは埋め込みICCプロファイルを格納します。色の表示はビューアやブラウザの色管理に依存するため、正確な色再現が必要な場合はICCプロファイルを用いるかsRGB前提で制作するのが一般的です。
APNGとアニメーション
PNG自体にアニメーション機能は標準仕様としては最初から含まれていませんでしたが、APNG(Animated PNG)という拡張によりアニメーションPNGが可能になりました。APNGは従来のPNG互換を重視して設計され、APNG非対応のビューアでは最初のフレームのみが表示されます。主要なモダンブラウザ(Chrome, Firefox, Safari 等)はAPNGをサポートしています。
他フォーマットとの比較(JPEG / GIF / WebP / SVG 等)
- JPEG:写真などのフルカラーピクセルに対して高圧縮率を出せるが、損失圧縮のためアーティファクトが生じる。透明度をサポートしない。写真はJPEG、透過や平坦な色領域・テキスト入り画像はPNGが有利。
- GIF:色数制限(256色)だがアニメーションをサポート。LZW特許問題がPNGの発展の一因。現在は透過とアニメーション用途でまだ使われるが、色表現で制約がある。
- WebP/AVIF:PNGに比べて高い圧縮率(可逆・非可逆両方をサポートする場合がある)やより新しい機能を持つが、互換性がPNGほど広くない場合がある。特にAVIFは高効率だがエンコード負荷が高い。
- SVG:ベクターフォーマットで拡大縮小に強い。写真表現には不向きだが、ロゴやアイコンには適している。PNGはラスタ画像として一律に扱える。
最適化と実務的な運用
PNGをウェブで効率的に使うにはいくつかの最適化手法があります。
- 適切な色タイプ選択:写真ならJPEG、透過やロゴはPNG。パレットで十分ならインデックスカラー(PNG-8)に変換してサイズ削減。
- ビット深度の削減:16ビットを使う必要がなければ8ビットにする。
- フィルタや圧縮パラメータの最適化:optipng, pngcrush, zopflipng, pngquant(※pngquantは二値化(量子化)により結果的に「損失」を伴うが非常に効果的)などのツールを使用。
- 不要メタデータの削除:iCCPやtEXtなど不要なチャンクを削ることでサイズを削減できる。
- 検討対象として、新フォーマット(WebP/AVIF)への代替やブラウザごとのフォールバックを設計する。
実装とライブラリ
PNGの標準的実装としては libpng(PNGファイルの読み書きライブラリ)が広く使われています。圧縮・解凍には zlib(DEFLATE実装)が使われます。多くの画像処理ツールや言語ライブラリ(ImageMagick, Pillow 等)がこれらを内部で利用してPNGを扱います。
互換性と注意点
ほとんどのモダン環境(ブラウザ、OS、画像ビューア)はPNGをネイティブにサポートしますが、次の点に注意が必要です。
- ガンマ情報やICCプロファイルの扱いの違いにより、表示色がツール間でわずかに異なることがある。
- アルファ合成(プリマルチプライドの有無)でエッジにアーチファクトが出ることがあるため、画像編集時に正しい合成設定を選ぶ。
- PNGにはEXIFブロックの標準的な位置がないため、カメラ由来のメタデータは扱いが限定される(代替としてtEXt/iTXtやiCCP等のチャンクに格納可能、近年はeXIfチャンクの利用もある)。
- 非常に大きな画像(幅・高さ)はIHDRの制約や実装の制限により扱いにくい。PNG仕様では幅・高さの最大値として 2^31−1 が参照される場合があるが、実装依存の制約もあるため注意。
セキュリティ
PNGは仕様に従わない不正なチャンクや破壊された圧縮データ等で脆弱性を突かれる可能性があります。ライブラリのバグや不完全な入力検証によるバッファオーバーフローや解凍時の問題が報告されてきたため、常に信頼できるライブラリを最新に保つこと、外部から受け取るファイルは検証・サンドボックス化することが重要です。
まとめ(実務的な推奨)
PNGは「画質を落とさず透過を扱いたい」場面で最も適したフォーマットの一つです。アイコン・ロゴ・スクリーンショット・UI素材など、色の正確性と透明度が要求される用途ではPNGを選びます。ウェブ配信では画像の特性と配信コストを天秤にかけ、必要に応じてPNG最適化や最新フォーマット(WebP/AVIF)の採用を検討してください。
参考文献
- PNG (Portable Network Graphics) Specification (W3C)
- RFC 2083 - The "image/png" Media Type
- libpng — Official Page
- zlib — Compression Library
- MDN Web Docs — Image formats
- Wikipedia — Portable Network Graphics
- Adam7 Interlace (参考解説)
- Can I use — APNG support


