These pages are written by only Japanese.

Welcom to My Diary.com
最新の日記タイトル一覧カテゴリ別タイトル一覧トップへ戻る〜

こんにちは♪ 現在は4月26日(金)16時21分。 もうすぐ退社時刻?


hns - 日記自動生成システム - Version 2.19.5 (色々 Fixed)

先月 2008年10月 来月
01 02 03 04
05 06 07 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Namazu for hns による簡易全文検索です。
詳細は 詳細指定/ヘルプをご参照下さい。
検索式:

2008年10月06日(月)

[swfed] 0.13 release

PNG PALETTE 形式の透明度対応:

PNG の透明度が効かない場合があるとの事で調べたところ、 PALETTE 形式の透明度の考慮が抜けている事が分かりました。 マニュアルを見る感じ、これっぽい。
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
あってるっぽい。

png_dump.c:

透明度付き PALETTE 形式 PNG に対応したのでプログラムを晒します。 コンパイル
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)
実験ページ

swfed への適用:

replace API の戻り値を修正:

成功:false, 失敗:true になっていたので、修正。 C 言語では成功=>0、失敗=>非0 が一般的ですが、そのまま PHP の false, true に bind しちゃってました。○rz

リリース:

ふぅ… 。 色々とバグを治しました。
というか replace API の戻り値の不具合は本当にごめんなさい。 ごめんなさい。(´Д`;)

これで、1 日分だよ〜。

タイトル一覧
カテゴリ分類
Database
JXTA
Java
XML
awm
bookmark
keyword
memo
news
research
Powered by hns-2.19.5, HyperNikkiSystem Project