png_dump 改良

swfed-0.12 対応での調査用に、PALETTE フォーマットの時に含まれる色インデックス(いわゆるカラーマップ)情報の表示を追加しました。
libpng 的には

png_color *palette = NULL;
int palette_num = 0;
png_get_PLTE(png_ptr, png_info, &palette, &palette_num);

こんな感じに取得できて、

for (i = 0 ; i < palette_num ; i+=8 ) {
    printf("[%03d]", i);
    for (j = 0 ; (j < 8) && ((i+j) < palette_num) ; j++) {
        printf(" #%02x%02x%02x",
               palette[i+j].red,
               palette[i+j].green,
               palette[i+j].blue);
    }
    printf("\n");
}

こんな感じで参照できます。

プログラム

gcc png_dump.c bitstream.c -lpng

以下のページでも動作を確認できます。PNG ファイルを放り込むと内部で png_dump が動きます。