2011-01-04 10 views
0

特定のウェブサイトのfaviconsをダウンロードして表示します。私はBingのsolutionに続いてストリームから画像フォーマットを検出しましたが、別の障害にぶつかっていました。今ストリームからTIconに特定のアイコンサイズをロードする

var 
    icon : TIcon; 
begin  
    icon := TIcon.Create; 
    try 
    icon.LoadFromStream(faviconStream); 
    spFavicon.Glyph.Assign(icon); 
    finally 
    icon.Free; 
    end; 
end; 

spFaviconがRaizeコンポーネントからTRzGlyphStatusある。そのグリフのプロパティをTBitmapのである。)

、これは動作しますが、時々、ダウンロードアイコン:実際のアイコンイメージを仮定すると、コードは次のようになります異なるサイズの複数の画像を含んでいます。予想される16x16に加えて32x32。何らかの理由でコントロールのGlyphプロパティが大きなサイズを選択します。

は、16x16サイズののみをTIconにロードする方法、またはTIconをTBitmapにロードする方法はありますか。

テストファビコン:http://www.kpfa.org/favicon.ico

編集の場合:可能であれば、私はむしろ、最初のファイルにアイコンを保存避けると思います。

+0

icon.SetSize(16,16)を使ってアイコンを縮小することはできますが、元の16x16画像がロードされた場合と全く同じ効果はありません。 –

+0

この質問を確認するhttp://stackoverflow.com/questions/3813845 – RRUZ

答えて

0

.icoファイルのファイル形式の主なソースはMSDNです。あなたはこれからそれを解決することができるはずです。

Graphics.pasのReadIconの手順が使用できるかもしれませんが、私はあなたがfaviconsを探しているので16x16しか見つける必要がないと想像します。

あなたが本当にかわいくなったかったら、Firefoxにソースをダウンロードして、ファビコンをどのように扱っているか正確に見てください。

+1

ReadIconがInterfaceセクションに表示されていないこと、またはこの共通のニーズに対して「公式」なメカニズムがないように思えるのは不思議です。今のところ私は、ストリームから読み込む前にTIcon.SetSize(16,16)を呼び出すとそのトリックを行うように見えることがわかりました。 –

+1

@moodforadayええ、それはそれを行う最善の方法です。私はReadIconのそのニュアンスを認識していませんでした - 私は今日何か他のことを学んできました! –

関連する問題