[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: 透明 favicon



From: Katsumi Yamaoka <yamaoka@xxxxxxx>
Subject: [emacs-w3m:09846] Re: 透明 favicon
Date: Thu, 13 Dec 2007 16:48:46 +0900

> >> $ cat deb.ico|convert -geometry 48x48 ico: png32:- > deb.png
> 
> >> として、pngの形式を固定してやるとうちでも :background の色が背景になる
> >> ことがわかったのですが、ここで
> 
> >> (create-image "~/deb.png" 'png nil :background "")
> 
> >> などと、存在しない色名をいれとくと透過が残ります。とりあえず、
> >> "none","hoge"で OK でした :-) よろしければ、追試お願いします。
> 
> > うまくいきます!  いつも青田さんの問題解決能力に舌を巻きますよ。:)
> 
> うーむ、サイズが 16x16 のとき、無い色を指定すると debian の
> favicon はごみが残ってしまいますね (3倍に拡大):
>
> header line か mode line の色を指定すると問題無いので、それらの
> 色に追随させることを考えてみようと思います。
> 
> > libpng は前に書いたバージョンですが、convert は ImageMagick 6.3.5
> > と 6.3.7-3 で試しました。
>
> Imagick を 6.3.7-4 に上げました。これは Fedora 8 で一発 make で
> きます。さらに、png32 というタイプがどの版から利用可能なのかわか
> りませんが、少なくとも "5.4.7 07/01/02" はサポートしていないので、
> それを判別するコードも入れます。

もう少し詳しく見てみると、 色数が 8-bit より多い時に背景色合成ができな
くなるみたいです。なので、

$ cat deb.ico|convert -depth 8 -geometry 16x16 ico: png:- > deb.png

のほうがより汎用性が上がるかもしれません。

また、背景に存在しない色が指定された時 Emacs は alpha チャンネルを 0 か
0 以外かのどちらかでしか認識しないようです。これがゴミの原因だと思われ
ます。なので、

$ cat deb.ico|convert -depth 8 -geometry -channel alpha -fx 'a>0.5' ico: png:- > deb.png

として、 alpha チャンネルを二極化してもゴミがある程度とれました。(背景
色合成を使わないなら、 -depth 8 は不要)

それでもまだ今のほうが綺麗かなとも思いますが、参考までに

$ cat deb.ico|convert -geometry 16x16 ico: png32:- > deb-1.png
$ cat deb.ico|convert -depth 8 -geometry 16x16 -channel alpha -fx 'a>0.5' ico: png:- > deb-2.png

としたものを header line に表示した画面を添付しますね。3倍に拡大してま
す。左から、

deb-1.png :background ""
deb-1.png :background "grey20" (header line の背景色)
deb-2.png :background ""
deb-2.png :background "grey20"

の順です。

> ;; 他の試してみる人にご注意。(create-image "FILE" ...) は作った
> ;; 画像をキャッシュするので、いろいろ試して変化が無い場合は FILE
> ;; の名前を変えてみるなどしましょう。

(clear-image-cache) を使うと便利かもです。

;; そもそも、 ico の透過はマスクで行なわれているはずなんですけどね。 縮
;; 小する時に透過率が変えられちゃうのかな。それさえ抑制できれば…。

--
青田

PNG image