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

PNGは次の8バイトで始まる。
89,50,4e,47,0d,0a,1a,0a(16進数)
それ以降は、チャンクと呼ばれるブロックの連続。
  • チャンクの構造
[データ長(4byte)][データ名(4byte)][データ(データ長に書いてあるbyte)][CRC(4byte)]
  • イメージのサイズや色数はIHDRチャンクに入っている。
IHDRチャンクの、データの中の順序
[幅(4byte)][高さ(4byte)][ビットの深さ(1byte)][カラータイプ(1byte)]・・・

例)幅が[00,00,03,20]だったら、
320(16進数)→800(10進数)で、
800pxとなる。

  • 透過
透過画像かどうかは、IHDRチャンクのカラータイプまたは、tRNSチャンクによって設定されている。

カラータイプの場合、
0 = グレイスケール
2 = RGB
3 = パレット
4 = グレイスケール+アルファ
6 = RGB+アルファ

で、アルファチャネルを含んでいる(4か6)場合は、透過。
アルファチャネルがなく、tRNSチャンクがある場合はtRNSチャンクの中で設定された色が透過させる色。