PNG画像 (.png)
W3C勧告(1996) 標準Portable Network Graphics(PNG)は、ロスレスデータ圧縮、インデックスカラー、および可変アルファチャンネル透明度をサポートする、権利フリーのラスターグラフィックスファイル形式です。
PNG を JPG に変換
無料のブラウザ内 PNG から JPG へのコンバーター。お使いのデバイスでファイルを即座に変換します。
PNGをオンラインで圧縮
プライベート - ファイルがデバイスの外に出ることはありません
調査とメタデータ
オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してPNGファイルを識別します:
バイトレベルのヘッダーシグネチャ (マジックバイト)
オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してPNGファイルを識別します:
16進数シグネチャ(オフセット0):
89 50 4E 47 0D 0A 1A 0AASCII表現: .PNG....
標準化: W3C勧告(1996) / ISO/IEC 15948:2004
技術仕様
| コンテナアーキテクチャ | チャンクベースのバイナリコンテナで、チャンクごとに4バイトのCRC32検証が行われます |
| 圧縮 | 5つの予測スキャンラインフィルター(None、Sub、Up、Average、Paeth)を使用するDeflate(LZ77 + ハフマン符号化) |
| バイトエンディアン | チャンクの長さ、寸法、CRCにはビッグエンディアン(ネットワークバイトオーダー)を使用します |
| 色空間 | sRGB, Display P3, インデックスパレット(1〜8ビット), グレースケール, トゥルーカラー(24/48ビット) |
| チャンネルと構造 | RGB + アルファ(チャンネルあたり最大16ビット / 64ビットRGBA) |
| 最大寸法 | 2,147,483,647 x 2,147,483,647 ピクセル(4バイト符号なし整数) |
| 透過性 | 完全な8ビット / 16ビット可変アルファ透明度チャンネル |
| ストリーミングとプログレッシブ | Adam7 7パスインターレースアルゴリズムにより、プログレッシブな2Dスキャンライン描画が可能 |
技術比較表:PNGと競合製品
| 技術属性 | PNG (現在) | WebP | AVIF | JPEG |
|---|---|---|---|---|
| 圧縮形式 | 厳密なロスレス(Deflate + 2D予測フィルター) | 非可逆(VP8)および可逆(VP8L) | 非可逆(AV1イントラ)および可逆 | 厳密な非可逆(離散コサイン変換) |
| アルファ透明度 | 完全な8ビット / 16ビット可変アルファチャンネル | 8ビットアルファチャンネルをサポート | 8ビット / 10ビット / 12ビットアルファをサポート | 透明度チャンネルのサポートなし |
| ファイルサイズ(写真) | 写真では非可逆形式より大きくなることがよくあります。相対サイズは画像とエンコーダーによって異なります | JPEGより小さくなる場合があります。結果は画像とエンコーダーによって異なります | JPEGより小さくなる場合があります。結果は画像とエンコーダーによって異なります | 中程度のベースライン |
| ファイルサイズ(グラフィックス/UI) | スクリーンショット、線画、テキストに最適で非常にコンパクト | 優れたロスレスモード | 良好だがエンコード速度が遅い | 不良(シャープなエッジにリンギングアーティファクトが発生する) |
| ブラウザ互換性 | 1998年以降、すべてのブラウザで100%対応 | モダンブラウザの97%以上でサポート | モダンブラウザの93%以上でサポート | 100%対応 |
一般的な破損モードと16進数リカバリガイド
画像ビューアに「致命的なエラー: 有効なPNGファイルではありません」と表示されるか、オープンに失敗する。
根本原因: ASCII転送モードにより最初の8バイトが改変された(0x0D 0x0A が 0x0A または 0x0D 0x0D 0x0A に文字化けした)。
復旧: バイナリエディタでファイルを開き、最初の8バイトが「89 50 4E 47 0D 0A 1A 0A」と一致することを確認します。この正確な8バイトのヘッダーを復元することで、画像が回復することがよくあります。
pngcheckが「IDATチャンクのCRCエラー」を報告するか、下部のスキャンラインが破損した状態で部分的に読み込まれる。
根本原因: 圧縮されたzlibデータストリーム内のビット破損、またはIDATチャンク内の無効なCRC32チェックサム。
復旧: pngcheck -f または Deflate ストリームリカバリユーティリティを使用して有効なCRC32値を再計算するか、破損したブロックの手前までのスキャンラインを復元します。
デスクトップビューアでは正常に表示されるが、iOSアプリケーションで表示に失敗する。
根本原因: iOSがApple独自のCgBIバイトスワップ形式または非標準の色空間チャンクを想定しているため。
復旧: 「pngcrush -revert-iphone-optimizations」を使用して画像を正規化し、標準のW3C RGBA順序に復元します。
セキュリティ分析とパーサー攻撃ベクトル
PNGは多くのOSやアプリでサポートされています。セキュリティリスクには、デコーダーのメモリ枯渇や悪意のある補助チャンクが含まれます。
既知の攻撃ベクター
- サイズオーバーのtEXtおよびzTXtメタデータチャンクにより、サンドボックス化されていないデコーダーでメモリ不足(OOM)サービス拒否を引き起こす。
- レガシーのlibpngリリースにおけるヒープバッファオーバーフローの脆弱性(例:png_set_PLTEにおけるCVE-2015-8126)。
- ファイルサイズが小さいにもかかわらず巨大な寸法(例:100,000 x 100,000ピクセル)を宣言し、展開時にメモリを圧迫するピクセル爆弾攻撃。
- 補助プライベートチャンク(例:eXIf またはカスタムチャンクタイプ)に暗号化されたペイロードを隠すステガノグラフィーによるデータ流出。
防御的ベストプラクティス: メモリ内にピクセルバッファを割り当てる前に、必ず画像の寸法を検証してください。メモリ安全なサニタイザーを使用して、ユーザーアップロード時の不要な補助チャンク(eXIf、tEXt)を削除してください。
歴史的背景とマイルストーン
主なメリット
- PNGは可逆圧縮を使用するため、変更していない画像を符号化しても圧縮による損失は生じません。ただし、編集や色変換によって画素値が変わることがあります。
- スムーズな8ビットアルファ透明度により、複雑な背景上でも自然な合成が可能です。
- ガンマ補正と色度チャンクにより、多様なモニター間で一貫した表示が保証されます。
技術的な制限とデメリット
- 写真コンテンツの場合、WebPやAVIFなどの最新の非可逆フォーマットに比べてファイルサイズが大幅に大きくなります。
- 標準のPNGにはネイティブのマルチフレームアニメーション機能がありません(APNG拡張が必要です)。
- 高色深度(チャンネルあたり16ビット)により、非圧縮のインメモリデコードバッファが非常に大きくなります。
興味深い技術トリビア
- 8バイトのマジックヘッダーは、FTP転送によるCR/LF改行コードの破損を検出するために特別に設計されました。
- PNGの非公式な再帰的頭字語は「PNG's Not GIF」でした。
- AppleはiOSアプリのPNGで独自のCgBIチャンクを使用しており、GPU直接描画のためにRGBAをBGRAに反転させています。
よくある技術的な質問
画像編集ソフトで保存すると、PNGファイルのサイズが大きくなることがあるのはなぜですか?
ソフトウェアスイートによって、使用するDeflate圧縮レベルや予測スキャンラインフィルターのヒューリスティックが異なります。Photoshopなどのプログラムは、圧縮されていないカラープロファイル、XMPメタデータブロック、最適化されていないIDATチャンクサイズを頻繁に追加します。File2File.app Compressorのような専用ツールは、5つのスキャンラインフィルターすべてを再評価し、最小限のファイルサイズを実現します。
PNG-8とPNG-24の違いは何ですか?
PNG-8は最大256色のインデックスカラーパレットを使用し(GIFに類似)、単純なアイコンに適した非常に小さなファイルを生成します。PNG-24は1,670万色(チャンネルあたり8ビットのトゥルーカラー)をサポートし、PNG-32には8ビットのアルファ透明度チャンネルが追加されます。
PNGに5つの予測スキャンラインフィルターがあるのはなぜですか?
Deflateは繰り返されるバイトパターンを圧縮します。写真やグラデーションのピクセル値は徐々に変化するため、PNGは隣接するピクセル間の差分を計算することで各スキャンライン(None、Sub、Up、Average、Paeth)をフィルター処理します。これにより、グラデーションデータがほぼゼロのバイト列に変換され、Deflateでの圧縮効率が飛躍的に向上します。
PNGは商業印刷用のCMYKカラー空間をサポートしていますか?
いいえ。公式のW3C PNG仕様では、カラータイプがグレースケール、インデックス、RGBに意図的に制限されています。CMYKを必要とするプロフェッショナルな印刷ワークフローでは、TIFFまたはPDFコンテナを使用する必要があります。
関連するPNG変換ペア
PNG ラスター画像を JPEG 形式に変換すると、ロッシー(非可逆)圧縮を適用してファイルサイズが縮小され、ウェブサイトでの画像の読み込みが高速化され、ストレージ容量が節約されます。
不可逆なJPEGラスター画像をロスレス(可逆)なPNGラスター画像に変換することで、さらなる世代劣化を防ぎ、アルファチャネルの透明度をサポートします。
PNG画像をWebPに変換すると、透明度を保ちながらファイルサイズを減らせる場合があります。結果は非可逆/可逆エンコードの選択と画像内容によって異なります。
WebPをPNGに変換すると、PNGに対応するソフトウェアで使える静止画像になります。WebPのアニメーションは保持されず、非可逆圧縮で失われたディテールも復元されません。
HEICをPNGに変換することで、非可逆HEVC圧縮された写真を広くサポートされている可逆グラフィックファイルに変換します。
SVGベクターファイルをPNGラスター画像に変換することで、スケーラブルなコードベースのグラフィックスを、あらゆるアプリケーションに対応する固定ピクセルグリッドへと変換します。
レスポンシブなWebスケーリングとベクター互換のレイアウト統合のため、ラスターPNG画像をSVG XMLベクターコンテナ内にカプセル化します。
Adobe Photoshop PSD グラフィックをブラウザ上で直接、サーバー送信なしで、完全なアルファチャンネルの透明度を持つロスレス PNG 画像に変換します。