PNG 形式とは — 可逆圧縮と透過背景
PNG 形式の誕生の背景(GIF の特許問題)と第3版(2025年、HDR・APNG・EXIF)までの歴史、可逆圧縮とチャンク構造、透過、写真だと容量が大きくなる理由を解説します。
PNG(Portable Network Graphics)は、1990年代半ばに GIF で使われていた LZW 圧縮の特許問題を避けつつ、GIF より優れた機能を提供するために作られた形式です。1996年に W3C 勧告となり、その後 ISO/IEC 15948 としても標準化されました。2025年6月には、第2版(2003年)以来22年ぶりの改訂版となる PNG 第3版 が W3C 勧告として公開され、アニメーション PNG(APNG)、HDR の色情報、EXIF チャンクが正式に規格に含まれました。
圧縮の仕組み
PNG はピクセルの値をまったく変えない 可逆 形式です。各行にフィルターをかけて「左・上のピクセルとの差」のような予測しやすい値に変換し、zip と同じ系統の Deflate アルゴリズムで圧縮します。同じ色が広く続けば差の値が 0 の連続になってとても小さく圧縮され、ピクセルごとに値が少しずつ違う写真はほとんど圧縮されません。
色を 256 色以下に減らしてパレット方式(インデックスカラー)で保存すると容量を大きく減らせますが、この処理自体は色を減らす劣化なので、結果が PNG であっても元画像とは異なる点に注意してください。
ファイルシグネチャとチャンク構造
PNG ファイルは必ず 8 バイトのシグネチャ(16 進数 89 50 4E 47 0D 0A 1A 0A)で始まります。その後に チャンク という単位が続き、各チャンクは長さ・種類(4 文字)・データ・CRC チェック値で構成されます。
| チャンク | 役割 |
|---|---|
| IHDR | 幅・高さ、ビット深度、カラー形式 |
| PLTE | パレット(インデックスカラーの場合) |
| tRNS | パレット・単色画像の透過情報 |
| IDAT | 圧縮されたピクセルデータ(複数に分割される場合あり) |
| eXIf | EXIF メタデータ(第3版で正式採用) |
| cICP | HDR などの色空間情報(第3版で追加) |
| acTL · fcTL · fdAT | APNG のアニメーション制御・フレーム(第3版で正式採用) |
| IEND | ファイルの終わり |
未知の補助チャンクは無視するよう設計されているため、新機能を追加しても古いソフトでファイルを開けます。APNG 非対応のビューアーが最初のフレームだけを表示するのも、この設計のおかげです。
透過
PNG はピクセルごとに 0〜255(16 ビットなら 0〜65,535)段階の アルファチャンネル を持てるので、半透明の影や髪の毛の輪郭まで自然に表現できます。背景を消した画像、ロゴ、アイコンを保存する標準形式として使われる理由です。
長所と限界
- 文字・線・図表に最適:輪郭がくっきり保たれ、容量も JPG より小さいことが多くなります。
- 何度保存しても劣化しない:編集途中のファイルに向いています。
- 写真には非効率:同じ写真を JPG の数倍の容量で保存することになります。
- APNG 対応:Can I use によると Chrome 59、Firefox 3、Safari 8 から対応しており、非対応のソフトは最初のフレームだけを表示します。
主な用途
画面キャプチャ、ロゴ・アイコン、透過背景の画像、図表・グラフ、編集用の元データ。印刷所が可逆形式のファイルを求めるときにも使われます。
他の形式に変換するとき
- PNG → JPG:透明な部分は背景色で埋める必要があります。スクリーンショットを JPG にすると文字のまわりがにじむことがあるので、画質は高めにしてください(PNG を JPG に)。
- PNG → WebP:可逆 WebP に変換すると、透過を保ったまま容量が減ることが多くあります。Google は可逆 WebP が PNG より平均 26% 小さいと発表しています。
- PNG → ICO:ファビコンや Windows アイコンが必要なら PNG を ICO に 変換します。正方形の元画像を使うのがおすすめです。
- 16 ビット PNG:ブラウザの Canvas はチャンネルあたり 8 ビットで処理するため、16 ビットの元画像を Web ツールで変換すると 8 ビットに減ります。