オフセット | 内容 | サイズ | 説明 |
---|---|---|---|
00 | データサイズ | 4 bytes | データ配列のサイズを定義 |
04 | チャンク名 | 4 bytes | チャンクの名称(ASCII文字コード) |
08 | データ配列 | 可変長 | 実際のデータ |
08 + データサイズ | CRC検査数字 | 4 bytes | データの正当性をチェック |
アドレス | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | +A | +B | +C | +D | +E | +F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
[00000000] | - | - | - | - | - | - | - | - | 00 | 00 | 00 | 0D | 49 | 48 | 44 | 52 |
[00000010] | 00 | 00 | 00 | A0 | 00 | 00 | 00 | 78 | 08 | 03 | 00 | 00 | 00 | 42 | 7C | 09 |
[00000020] | 5D | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
アドレス | 08 〜 0B | 0C 〜 0F | 10 〜 1C | 1D 〜 20 |
---|---|---|---|---|
内容 | データサイズ | チャンク名 | データ配列 | CRC検査数字 |
データサイズ = | { 00, 00, 00, 0D } h | → | 0x0D は10進数で13なので、データ配列のサイズは13バイトになる |
チャンク名 = | { 49, 48, 44, 52 } h | → | ASCII文字コードで読むと、"IHDR"になり、IHDRチャンクとして認識される |
データ配列 = | { 00, ..(省略).. ,00 } h | → | 実際のデータ配列(この例では13バイト)、詳細は後述のIHDR参照 |
CRC検査数字 = | { 42, 7C, 09, 5D } h | → | チャンク名とデータ配列を元にCRCアルゴリズム(注1)で算出される数値 |
データ構造 | 役割 | 説明 |
---|---|---|
PNG識別子 | PNGの識別子 | PNG画像を識別するための8バイトの配列 |
IHDRチャンク | イメージヘッダ | 画像サイズやビット深度など、画像全般の重要なデータ |
補助チャンク | -- | ガンマ値や色度など色の表示に関する複数のチャンク |
PLTEチャンク | パレット | インデックスカラーモードでは必須 |
補助チャンク | -- | 透過色などの表示に関する複数のチャンク |
追加チャンク | -- | 複数の公開チャンク, 無理に書き込む必要なし |
IDATチャンク | イメージデータ | 圧縮された画像データの配列, 複数存在しても良い |
IENDチャンク | 画像の終端 | PNGファイルの終端, データ長はゼロ |
標準チャンク ( Standard Chunks ) |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
追加チャンク ( Additional Chunks ) |
|
16進表記 | 89 | 50 | 4E | 47 | 0D | 0A | 1A | 0A |
---|---|---|---|---|---|---|---|---|
C言語での表記 | \211 | P | N | G | \r | \n | \032 | \n |