「Tips - PNGフォーマット」の編集履歴(バックアップ)一覧はこちら
「Tips - PNGフォーマット」(2007/10/03 (水) 22:26:00) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
&font(b,144%){CONTENTS}
#contents
----
**PNG処理を組み込むためのライブラリ
***DLL
-[[imgctl.dll>http://www.ruche-home.net/download/?pack=imgctl]]
-[[PNGLoader.dll>http://www.functiont.info/programing/]]
***Delphiコンポーネント
-[[PNG Delphi(TPNGImage)>http://pngdelphi.sourceforge.net/]] 英語
-[[TNeoPNG>http://www2.csc.ne.jp/~mci_error/menu_delphi_png.htm]]
-[[GLDPNG>http://norg1964.hp.infoseek.co.jp/delphianworld/compo/graphmul.html#GM0040]] 開発・サポート終了
-[[GraphicEx>http://www.soft-gems.net/Graphics.php]] 英語、読み込みのみ
**データ概要
|CENTER:~名称|CENTER:~役割|CENTER:~設置|~解説|
|BGCOLOR(#f8f8e0):CENTER:|CENTER:|CENTER:||c
|BGCOLOR(#ffd8ff):~PNGシグネチャ|識別部|必須|PNGフォーマットであることを示す。|
|BGCOLOR(#fff0b8):~IHDRチャンク|ヘッダ|必須|画像サイズなどの基本情報。|
|補助チャンク||推奨|色の表示に関する補助データ。|
|BGCOLOR(#e8e8d0):~PLTEチャンク|パレット||最大256色分のパレット情報。&br();IHDRチャンクに含まれるカラー・モードによって有無が変わる。|
|補助チャンク||推奨|パレットと透過に関する補助データ。|
|BGCOLOR(#f8f8ff):追加チャンク||任意||
|BGCOLOR(#e0f0ff):~IDATチャンク|データ|必須|画像データ本体。複数あっても良い。|
|補助チャンク||推奨|テキストデータ。どこに設置しても良い。|
|BGCOLOR(#f8f8ff):追加チャンク||任意|GIFなどに関するデータ。どこに設置しても良い。|
|BGCOLOR(#c8ffd0):~IENDチャンク|終端|必須|PNGファイルの終りを示す。|
**データ構造
|BGCOLOR(#f8f8e0):CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|c
|BGCOLOR(#ffd8ff):~PNGシグネチャ|>|>|>|89 50 4E 47 0D 0A 1A 0A&br();固定|
|(チャンク構造)|データ長&br();4バイト|チャンク名&br();4バイト|データ部&br();データ長に記述されたバイト数|CRC&br();4バイト|
|BGCOLOR(#fff0b8):~IHDRチャンク|00 0D&br();固定|49 48 44 52&br();固定|(後述)|算出|
|cHRMチャンク|||||
|gAMAチャンク|||||
|sBITチャンク|||||
|sRGBチャンク|||||
|iCCPチャンク|||||
|BGCOLOR(#e8e8d0):~PLTEチャンク|データ長による|50 4C 54 45&br();固定|(後述)|算出|
|チャンク|||||
|BGCOLOR(#e0f0ff):~IDATチャンク|データ長による|49 44 41 54&br();固定|Deflateアルゴリズムによる圧縮データ|算出|
|BGCOLOR(#c8ffd0):~IENDチャンク|00 00&br();固定|49 45 4E 44&br();固定|(なし)&br();0バイト|AE 42 60 82&br();固定|
***IHDRチャンクのデータ部
|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|c
|画像の幅&br();4バイト|画像の高さ&br();4バイト|ビットの深さ&br();1バイト|カラー・タイプ&br();1バイト|圧縮方式&br();1バイト|フィルター方式&br();1バイト|インタレース方式&br();1バイト|
-ビットの深さとカラー・タイプとPLTEチャンク
||||||CENTER:|RIGHT:|RIGHT:|CENTER:|c
|>|>|>|>|~ビットの深さ|>|>|CENTER:~カラー・タイプ|~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チャンクのデータ部
|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|c
|>|>|パレット・データ&br();3バイト|>|>|パレット・データ&br();3バイト|……|>|>|パパレット・データ&br();3バイト|
|赤の値&br();1バイト|緑の値&br();1バイト|青の値&br();1バイト|赤の値&br();1バイト|緑の値&br();1バイト|青の値&br();1バイト|~|赤の値&br();1バイト|緑の値&br();1バイト|青の値&br();1バイト|
**参考サイト
-[[PNG - Sophia Web>http://homepage2.nifty.com/sophia0/png.html]]
-[[PNG ファイルフォーマット - むしゃぺらり の HSP ページ>http://www.setsuki.com/hsp/ext/png.htm]]
-[[PNG形式 - Temporary Junkyard>http://www.geocities.co.jp/Playtown-Knight/6845/sd_doc/format_png.html]]
-[[わかりやすい PNG の話 for Web - ミケネコ研究所>http://mikeneko.creator.club.ne.jp/~lab/grp/png/p3.html]]
&font(b,144%){CONTENTS}
#contents
----
**PNG処理を組み込むためのライブラリ
***DLL
-[[imgctl.dll>http://www.ruche-home.net/download/?pack=imgctl]]
-[[PNGLoader.dll>http://www.functiont.info/programing/]]
***Delphiコンポーネント
-[[PNG Delphi(TPNGImage)>http://pngdelphi.sourceforge.net/]] 英語
-[[TNeoPNG>http://www2.csc.ne.jp/~mci_error/menu_delphi_png.htm]]
-[[GLDPNG>http://norg1964.hp.infoseek.co.jp/delphianworld/compo/graphmul.html#GM0040]] 開発・サポート終了
-[[GraphicEx>http://www.soft-gems.net/Graphics.php]] 英語、読み込みのみ
**データ概要
|CENTER:~名称|CENTER:~役割|CENTER:~設置|~解説|
|BGCOLOR(#f8f8e0):CENTER:|CENTER:|CENTER:||c
|BGCOLOR(#ffd8ff):~PNGシグネチャ|識別部|必須|PNGフォーマットであることを示す。|
|BGCOLOR(#fff0b8):~IHDRチャンク|ヘッダ|必須|画像サイズなどの基本情報。|
|補助チャンク||推奨|色の表示に関する補助データ。|
|BGCOLOR(#e8e8d0):~PLTEチャンク|パレット||最大256色分のパレット情報。&br();IHDRチャンクに含まれるカラー・モードによって有無が変わる。|
|補助チャンク||推奨|パレットと透過に関する補助データ。|
|BGCOLOR(#f8f8ff):追加チャンク||任意||
|BGCOLOR(#e0f0ff):~IDATチャンク|データ|必須|画像データ本体。複数あっても良い。|
|補助チャンク||推奨|テキストデータ。どこに設置しても良い。|
|BGCOLOR(#f8f8ff):追加チャンク||任意|GIFなどに関するデータ。どこに設置しても良い。|
|BGCOLOR(#c8ffd0):~IENDチャンク|終端|必須|PNGファイルの終りを示す。|
**データ構造
|BGCOLOR(#f8f8e0):CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|c
|BGCOLOR(#ffd8ff):~PNGシグネチャ|>|>|>|89 50 4E 47 0D 0A 1A 0A&br();固定|
|(チャンク構造)|データ長&br();4バイト|チャンク名&br();4バイト|データ部&br();データ長に記述されたバイト数|CRC&br();4バイト|
|BGCOLOR(#fff0b8):~IHDRチャンク|00 0D&br();固定|49 48 44 52&br();固定|(後述)|算出|
|cHRMチャンク|||||
|gAMAチャンク|||||
|sBITチャンク|||||
|sRGBチャンク|||||
|iCCPチャンク|||||
|BGCOLOR(#e8e8d0):~PLTEチャンク|データ長による|50 4C 54 45&br();固定|(後述)|算出|
|チャンク|||||
|BGCOLOR(#e0f0ff):~IDATチャンク|データ長による|49 44 41 54&br();固定|(後述)|算出|
|BGCOLOR(#c8ffd0):~IENDチャンク|00 00&br();固定|49 45 4E 44&br();固定|(なし)&br();0バイト|AE 42 60 82&br();固定|
***IHDRチャンクのデータ部
|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|c
|画像の幅&br();4バイト|画像の高さ&br();4バイト|ビットの深さ&br();1バイト|カラー・タイプ&br();1バイト|圧縮方式&br();1バイト|フィルター方式&br();1バイト|インタレース方式&br();1バイト|
-ビットの深さとカラー・タイプとPLTEチャンク
||||||CENTER:|RIGHT:|RIGHT:|CENTER:|c
|>|>|>|>|~ビットの深さ|>|>|CENTER:~カラー・タイプ|~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チャンクのデータ部
|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|c
|>|>|パレット・データ&br();3バイト|>|>|パレット・データ&br();3バイト|……|>|>|パパレット・データ&br();3バイト|
|赤の値&br();1バイト|緑の値&br();1バイト|青の値&br();1バイト|赤の値&br();1バイト|緑の値&br();1バイト|青の値&br();1バイト|~|赤の値&br();1バイト|緑の値&br();1バイト|青の値&br();1バイト|
***IDATチャンクのデータ部
Deflateアルゴリズムによる圧縮データ。
DeflateアルゴリズムはPNGの他にも、ZIPやGZIPなどに採用されている。詳しい仕様はリンク先参照のこと。
-[[RFC 1951 DEFLATE Compressed Data Format Specification version 1.3>ftp://ftp.rfc-editor.org/in-notes/rfc1951.txt]] 原文
--[[futomi's CGI Cafe>http://www.futomi.com/lecture/japanese/rfc1951.html]]&br();同サイトには他にもzlib関連の日本語訳文あり。
--[[LabVIEW情報交換のページ>http://www.asahi-net.or.jp/~WR9K-OOHS/Pages/Nigel's/Nigel58/deflate.html]]
**参考サイト
-[[PNG - Sophia Web>http://homepage2.nifty.com/sophia0/png.html]]
-[[PNG ファイルフォーマット - むしゃぺらり の HSP ページ>http://www.setsuki.com/hsp/ext/png.htm]]
-[[PNG形式 - Temporary Junkyard>http://www.geocities.co.jp/Playtown-Knight/6845/sd_doc/format_png.html]]
-[[わかりやすい PNG の話 for Web - ミケネコ研究所>http://mikeneko.creator.club.ne.jp/~lab/grp/png/p3.html]]