我的应用程序下载并显示特定网站的favicon。我跟着Bing的solution来检测来自流的图像格式,但又遇到了另一个障碍。假设一个实际的图标图像,代码如下:
var
icon : TIcon;
begin
icon := TIcon.Create;
try
icon.LoadFromStream( faviconStream );
spFavicon.Glyph.Assign( icon );
finally
icon.Free;
end;
end;
( spFavicon 是来自Raize Components的TRzGlyphStatus。它的Glyph属性是TBitmap)
现在,这可行,但有时下载的图标包含不同大小的多个图像,例如32x32除了预期的16x16。由于某种原因,控件的Glyph属性选择较大的大小。
如何将仅16x16尺寸加载到TIcon,或从TIcon加载到TBitmap?
测试图标:http://www.kpfa.org/favicon.ico
编辑:如果可能的话,我宁愿避免先将图标保存到文件中。
答案 0 :(得分:0)
.ico文件的文件格式的主要来源是MSDN。你应该能够从中解决这个问题。
Graphics.pas中的ReadIcon
程序可能有用,但我想你只需找到16x16,因为你正在寻找favicon。
如果你想变得非常可爱,你可以将源代码下载到Firefox,并查看它们如何处理favicon。