Windows ICO形式を変換するならImage::MagickよりImagerのほうがいいかも
スポンサードリンク
M.C.P.C.: Favicon API α版の代わりに自サイトにAPIを設置する
にて、Windows ICO形式のFaviconをGIF形式に保存しなおすために、ImageMagick(と、PerlバインディングImage::Magick)を使っていたのですが、複数のアイコンが入っているICOへの対応が難しく、むりくり対応させても今度はImageMagickのバージョンによってICOの解釈がうまくいかなかったりしていました。
これを解決するために、favicon.hatena.ne.jpの非公開APIをキャッシュの期限を充分長くしたうえで使って、それで2年ぐらい運用してきたのですけれども、このAPI、もともとはてなブックマークで使われている内部APIなので、「はてなブックマークされたサイトでないとFaviconが取得されていない」という仕様であることがさっきわかりました!
そこで、Image::MagickとImagerの比較をして、使い勝手を確認しました。
use strict; use warnings; use Image::Magick; use Imager; use LWP::Simple; my $data = get('http://www.yahoo.co.jp/favicon.ico'); #use_image_magick( $data ); use_imager( $data ); exit; sub use_image_magick { my $data = shift; my $im = Image::Magick->new; $im->set( Magick => 'ico'); $im->BlobToImage($data); # ↑ICOに複数のイメージが入っているとNG # ファイルに書き出せば$im->Read('hoge.ico[0]')などで取り出せる $im->Resize(width => 16, height => 16); $im->Write('favicon.png'); undef $im; } sub use_imager { my $data = shift; my $im = Imager->new; $im->read( data => $data, type => 'ico' ); $im = $im->scale( xpixels => 16, ypixels => 16, type => 'min' ); $im->write( file => 'favicon.png' ); undef $im; } __END__
実際に200サイトぐらいで比較してみたら、Image::Magickのほうは、(事情によりImageMagickのバージョンを上げることができないため)Faviconが化けることがありましたが、Imagerのほうは結構平気でした。
yumみたいなパッケージ管理システムでいろんなライブラリを入れる必要がありますが、rootを持っている人ならばImagerを使ってみると捗るかもしれません。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3805
コメントする