CSのスプレー画像を作るときに、HalfLife Logo Creatorってソフトを使うけども、
使える色数が少ないらしく、フルカラーの画像をスプレー化すると、色が沢山落ちます。
しかし元画像を減色しても汚く出力されます。
元画像を16色BMPを使っても、そのまま再現できないのはおかしくね?もっと綺麗にならないの?
と思って、WAD3のデータ構造を調べていますが、不明な点が多い。
以下HalfLife Logo Creatorで作ったスプレーを解析したところで、分かった範囲。
ざっと見たら、BMPに非常に近い気がしたので、データの読み取りは苦労しなかった。
問題は不明な部分が多いところ。
ヘッダ{ 57 41 44 33 : "WAD3" 00 01 00 00 : 不明 E0 05 00 00 : 先頭からフッタへのオフセット値 7B 6E 65 77 : "{new" 00 1E 03 00 : 不明 00 00 00 00 : 不明 00 00 00 00 : 不明 20 00 00 00 : 横サイズ(リトルエンディアン) 32pixel 以下W 10 00 00 00 : 縦サイズ(リトルエンディアン) 16pixel 以下H 28 00 00 00 : 40固定? 以下n1 28 02 00 00 : n1 + (W*H) 以下n2 A8 02 00 00 : n1 + n2 + ( (W/2)*(H/2) ) 以下n3 C8 02 00 00 : n1 + n2 + n3 + ( (W/4)*(H/4) ) 以下n4 n1〜n4は何に使うかは不明。 } ピクセルデータ1{ W*Hの数だけデータが存在する 32*16 = 512byte } ピクセルデータ2{ (W/2)*(H/2)の数だけデータが存在する 16*8 = 128byte } ピクセルデータ3{ (W/4)*(H/4)の数だけデータが存在する 8*4 = 32byte } ピクセルデータ4{ (W/8)*(H/8)の数だけデータが存在する 4*2 = 8byte } 区切り文字?{ 00 01 : 2byte } カラーパレット{ 1色3byteで表現。256色。768byte固定 } 区切り文字?{ 00 00 : 2byte } フッタ{ 0C 00 00 00 : ? D4 05 00 00 : ? 縦横サイズによって変わる。 D4 05 00 00 : ? // 43 00 00 00 : ? 7B 4E 45 57 : "{NEW" newは小文字の場合もある 00 00 00 00 : ? 00 00 00 00 : ? 00 00 00 00 : ? }
カラーパレットの256番は恐らく透過色カラーです。
ピクセルデータが4つ存在するのは、恐らくミップマップのためです。
フッタ部分がとことん謎。
不明な部分が内部でスプレーのデータとしての意味を持たないのであれば、
ピクセルデータとカラーパレットの部分だけを書き換えるだけで、
255色で表現できるデータであれば色落ちしない綺麗なスプレーにできるはず。
あと必要になるだろうものは、縮小と減色の考え方ぐらい。