将png转换为高质量的ico

Baz*_*zzz 6 c# icons png

也许这是一个很容易解决的问题,但我还没有找到完美的解决方案.我正在尝试使用C#将png转换为ico,并在C/C#中找到将.PNG转换为.ICO的问题,其中提供了如下工作解决方案:

using (FileStream stream = File.OpenWrite(@"C:\temp\test.ico"))
{
    Bitmap bitmap = (Bitmap)Image.FromFile(@"c:\temp\test.png");
    Icon.FromHandle(bitmap.GetHicon()).Save(stream);
}
Run Code Online (Sandbox Code Playgroud)

对于我自己的项目,我稍微改变了这种方法:

string pngFile = "path/to/pngfile";
using (Bitmap bitmap = new Bitmap(pngFile))
{
   using (Icon icon = Icon.FromHandle(bitmap.GetHicon()))
   {
      using (MemoryStream stream = new MemoryStream())
      {
         icon.Save(stream);
         // something interesting with icon here
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是由此产生的ico质量很差,我猜它已经调整到16x16并丢失了一些颜色深度,也许现在只有16种颜色?如何转换为更高质量的ico文件?

Don*_*ott 8

我相信你需要一种更强大的方法GetHIcon().它更像是一种"快速而肮脏"的选择,绝不是无损.

这是一个可以在转换为ICO的过程中保留图像质量的类的示例:

https://gist.github.com/darkfall/1656050