※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

CONTENTS


PNG処理を組み込むためのライブラリ

DLL

Delphiコンポーネント

データ概要

名称 役割 設置 解説
PNGシグネチャ 識別部 必須 PNGフォーマットであることを示す。
IHDRチャンク ヘッダ 必須 画像サイズなどの基本情報。
補助チャンク 推奨 色の表示に関する補助データ。
PLTEチャンク パレット 最大256色分のパレット情報。
IHDRチャンクに含まれるカラー・モードによって有無が変わる。
補助チャンク 推奨 パレットと透過に関する補助データ。
追加チャンク 任意
IDATチャンク データ 必須 画像データ本体。複数あっても良い。
補助チャンク 推奨 テキストデータ。どこに設置しても良い。
追加チャンク 任意 GIFなどに関するデータ。どこに設置しても良い。
IENDチャンク 終端 必須 PNGファイルの終りを示す。

データ構造

PNGシグネチャ 89 50 4E 47 0D 0A 1A 0A
固定
(チャンク構造) データ長
4バイト
チャンク名
4バイト
データ部
データ長に記述されたバイト数
CRC
4バイト
IHDRチャンク 00 0D
固定
49 48 44 52
固定
(後述) 算出
cHRMチャンク
gAMAチャンク
sBITチャンク
sRGBチャンク
iCCPチャンク
PLTEチャンク データ長による 50 4C 54 45
固定
(後述) 算出
チャンク
IDATチャンク データ長による 49 44 41 54
固定
(後述) 算出
IENDチャンク 00 00
固定
49 45 4E 44
固定
(なし)
0バイト
AE 42 60 82
固定

IHDRチャンクのデータ部

画像の幅
4バイト
画像の高さ
4バイト
ビットの深さ
1バイト
カラー・タイプ
1バイト
圧縮方式
1バイト
フィルター方式
1バイト
インタレース方式
1バイト
  • ビットの深さとカラー・タイプとPLTEチャンク
    ビットの深さ カラー・タイプ PLTEチャンク
    10進数 2進数
    1 2 4 8 16 グレースケール 0 0000 不要
    8 16 RGB 2 0010 任意
    1 2 4 8 パレット 3 0011 必須
    8 16 4 グレースケール+α 4 0100 不要
    8 16 6 RGB+α 6 0110 任意

PLTEチャンクのデータ部

パレット・データ
3バイト
パレット・データ
3バイト
…… パパレット・データ
3バイト
赤の値
1バイト
緑の値
1バイト
青の値
1バイト
赤の値
1バイト
緑の値
1バイト
青の値
1バイト
赤の値
1バイト
緑の値
1バイト
青の値
1バイト

IDATチャンクのデータ部

Deflateアルゴリズムによる圧縮データ。

DeflateアルゴリズムはPNGの他にも、ZIPやGZIPなどに採用されている。詳しい仕様はリンク先参照のこと。

参考サイト