Django's House 透過画像を作ろう(http://www.kuronowish.com/~django/photo/RetuchRoom.html)
PNG ファイルのヘッダ部(IHDR に続くデータ)に、カラータイプと bit-depth というデータがあります。
右側は対応する画像です。
[ カラータイプと bit-depth の組み合わせ ]
いろいろな組み合わせがありますが、とりあえず、見つけた画像のデータだけ、ソフトで対応することにしました。
タイプ |
bit-depth |
ドットデータ | |
---|---|---|---|
|
|
それぞれのピクセルはR, G, B の3バイト | |
|
|
それぞれのピクセルはパレットインデックスを示す。 そのため PLTE チャンクが必要。 tRNS チャンクがあれば、パレットに連動してα値を示す。 | |
|
|
それぞれのピクセルはR, G, B の3バイトと A (=α値)の1バイト | |
|
|
それぞれのピクセルはR, G, B の6バイトとA (=α値)の1バイト 画像がないので検証できていない |
bmp |
bmp |
[ カラータイプ6のとき=8ビットサンプル ]
全体にα補正を半分かけた半透明の元画像です。
bmp |
bmp |
カラータイプのときは、α値がドットごとにくっついています。補正をすると、元の PNG の透過特性を正しく表現でき、補正しないと透過機能が無視されて、くっきり表現されてしまいます。
[ カラータイプ3のとき=PLTE,tRNS データの読出し ]
パレットデータ(PLTE)とそれに続く tRNSデータを読み出して、ピクセルデータ→パレット該当 RGB 取得→対応するtRNS データ=αを取得して補正、という手順を繰り返す必要があります。
変換プログラムのソースを参照ください。