スポンサーサイト

--年--月--日
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

拡張子は GIF だけど、中身はGIFじゃないアイコン

2011年11月12日

3S Tweet の GIF 対応を行っていたら、取得したイメージの拡張子は gif なのに、GIF画像として処理できないアイコンがあることを見つけました。

ファイルをダウンロードしてヘッダを見てみると、中身は PNG。
私の twitter のアイコンも同じでした。
(どうりで今まで表示されていたわけだ!)


GIF 画像の対応は ImageTools を使うことにしました。
http://imagetools.codeplex.com/


参照に以下のDLLを追加します。

ImageTools.dll
ImageTools.IO.Gif.dll
ImageTools.Utils.dll

一度だけ、どこかで以下の初期化を行います。

ImageTools.IO.Decoders.AddDecoder();

実際の描画部分はこんな感じ。

ExtendedImage eximg = new ExtendedImage();

// GIF画像読み込み完了時の処理
eximg.LoadingCompleted += (s, args) =>
{
    Dispatcher.BeginInvoke(() =>
    {
        // GIFとして読込成功
        iconImage.Source = eximg.ToBitmap();
    });
};

// 画像が GIF で無い場合は失敗するから.
eximg.LoadingFailed += (s, args) =>
{
    Dispatcher.BeginInvoke(() =>
    {
        // GIF 以外として処理.
         iconImage.Source  = new BitmapImage(new Uri( iconURL ));
    });
}


// GIF画像読み込み開始
eximg.UriSource = new Uri( iconURL, UriKind.Absolute);


いろいろと方法はあるだろうけど、ほとんどの GIF ファイルは正しいと考えて、失敗したときは JPEG or PNG として処理するとしました。

とりあえず、これで twitter のアイコンは表示できるようになりました。

Comment

管理者のみに表示

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。