0

我的应用程序下载并显示特定网站的网站图标。我遵循 Bing 的从流中检测图像格式的解决方案,但遇到了另一个障碍。假设一个实际的图标图像,代码如下:

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)

现在,这可行,但有时下载的图标包含多个不同尺寸的图像,例如,除了预期的 16x16 之外,还包含 32x32。由于某种原因,控件的 Glyph 属性选择了较大的尺寸。

如何仅将 16x16 大小加载到 TIcon,或从 TIcon 加载到 TBitmap?

测试图标:http ://www.kpfa.org/favicon.ico

编辑时:如果可能的话,我宁愿避免先将图标保存到文件中。

4

1 回答 1

0

.ico 文件的文件格式的主要来源是MSDN。你应该能够从中解决。

Graphics.pas 中的ReadIcon过程可能有用,但我想您只需要找到 16x16,因为您正在寻找网站图标。

如果你想变得非常可爱,你可以下载源代码到 Firefox,看看它们是如何处理网站图标的。

于 2011-01-04T19:22:50.180 回答