Icon.ExtractAssociatedIcon函数的质量不佳

时间:2011-10-28 05:44:50

标签: c# resources icons

我尝试从exe中获取图标,我使用了下面的代码段

 C#
 FileStream fs = new FileStream(icoFileNam, FileMode.OpenOrCreate);
 Icon ico = Icon.ExtractAssociatedIcon(exefilePath);
 ico.Save(fs);

保存的图像缺乏质量。我已将图像保存为.ico文件。

有谁知道如何保留exefile中存在的图标的原始质量?

1 个答案:

答案 0 :(得分:2)

在最常见的情况下,您可以通过Icon.ToBitmap()方法使用提取的图标位图数据。您可以将此图像保存为不同的格式。但是将图标保存为"true" .ico file非常困难。

问题是.Net中没有用于图标图像的嵌入式编码器。因此,默认情况下,结果已保存为低色图像。如果这是不可接受的,建议MS手动将原始位图数据保存为.ico。我建议你使用已经实现此任务的IconLib library

Icon icon = Icon.ExtractAssociatedIcon(@"C:\Windows\System32\notepad.exe");
MultiIcon mIcon = new MultiIcon();
SingleIcon sIcon = mIcon.Add("notepad");
sIcon.CreateFrom(icon.ToBitmap(), IconOutputFormat.Vista);
sIcon.Save(@"c:\notepad.ico");