These pages are written by only Japanese.
|
Namazu for hns による簡易全文検索です。 詳細は 詳細指定/ヘルプをご参照下さい。 |
||||||||||||||||||||||||||||||||||||||||||||||||
png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, &trans_values); trans - array of transparent entries for palette (PNG_INFO_tRNS) trans_values - graylevel or color sample values of the single transparent color for non-paletted images (PNG_INFO_tRNS) num_trans - number of transparent entries (PNG_INFO_tRNS)
png_get_bKGD(png_ptr, info_ptr, &background); background - background color (PNG_VALID_bKGD) valid 16-bit red, green and blue values, regardless of color_typeとりあえず前者の tRNS を解析する事にしました。 png.h を見ると
extern PNG_EXPORT(png_uint_32,png_get_tRNS) PNGARG((png_structp png_ptr, png_infop info_ptr, png_bytep *trans, int *num_trans, png_color_16p *trans_values));となっているので、この型でやり取りすれば OK っぽいです。
png_color *palette = NULL; int palette_num = 0; png_bytep trans; int num_trans; png_color_16p trans_values; png_get_PLTE(png_ptr, png_info_ptr, &palette, &palette_num); printf(" palette_num=%d", palette_num); png_get_tRNS(png_ptr, png_info_ptr, &trans, &num_trans, &trans_values); printf(" num_trans=%d",num_trans);実験結果
palette_num=127 num_trans=127あってるっぽい。
gcc png_dump.c -lpng bitstream.c実行結果
(width, height)=(80,80) bpp=8 color_type=3(PALETTE) palette_num=127 num_trans=127 [000] #000000(00) #010101(20) #030202(11) #040404(3e) [004] #080706(52) #090605(2a) #140c0b(ff) #141111(72) [008] #350e0f(ff) #1b1b1b(9d) #241f1d(ff) #312020(5f)実験ページ