2019年3月20日水曜日

PNGのチャンク 第2回 必須チャンク(IHDR、IDAT、IEND)

 
こんにちは、きまぐれソフトです。

前回はチャンクの構造について紹介しましたが、今回からは個別のチャンクをそれぞれ紹介していきます。

今回はチャンクの中でも重要な必須チャンクを紹介します。
必須チャンクには以下の3種類が有ります

  • IHDRチャンク
  • IDATチャンク
  • IENDチャンク
IHDRチャンク

  IHDRチャンクは “Image Header” であり、全てのチャンクの中で先頭に格納されます。データ部には以下の画像情報が格納されています。
  • 幅(ピクセル):4バイト
  • 高さ(ピクセル):4バイト
  • 色深度:1バイト
  • カラータイプ:1バイト
  • 圧縮形式:1バイト
  • フィルター形式:1バイト
  • インターレース形式:1バイト
以上の13バイトです。

幅、高さはそれぞれのピクセル数がそのまま格納されます。
色深度はグレースケールまたはRGB各値のビット数で、8ビットカラーがいわゆるフルカラーです。指定できる色深度はカラータイプ別に決められています。使える色深度は次回説明します。
カラータイプは以下の5種類が指定できます。

  • 0:グレースケール
  • 2:カラー
  • 3:インデックスカラー
  • 4:グレースケール及び透明度
  • 6:カラー及び透明度
圧縮形式、フィルター手法は0のみが使用できます。
インターレースは0(使用しない)と1(Adam7を使用する)の2種類が指定できます。

IDATチャンク


IDATチャンクは “Image Data”であり、画像のビットマップ本体です。IHDRチャンクで指定された色数、サイズ、格納形式でデータが収められます。
規格上、複数のIDATチャンクに分割する事も許されていて、任意のデータ長で区切る事ができます。用途は思いつきませんが、データ長が0バイトのIDATチャンクも存在できます。

IENDチャンク


IENDチャンクはPNGデータの終わりを示すデータ長0バイトのチャンクです。これ以降にデータが続いていてもPNGの表示には影響させない事になっています。

以上の3つが必須であり全てのPNGファイルに含まれています。
次回はカラータイプと色深度について紹介します。




0 件のコメント:

コメントを投稿