图像转换为图标

3
我使用以下代码将图像转换为图标。这是我的代码。
Bitmap Cbitmap=null;
  try
  {
  Cbitmap = new Bitmap("path of local image"); 
  }
  catch(Exception)
  {
  return;
  }
  Cbitmap.MakeTransparent(Color.White);
  System.IntPtr icH = Cbitmap.GetHicon();
  Icon ico = Icon.FromHandle(icH);
  Cbitmap.Dispose();
  System.IO.FileStream f = new System.IO.FileStream(Path where to save icon"" + "\\image.ico", System.IO.FileMode.OpenOrCreate);
  ico.Save(f);
   f.close();
  ico.dispose();

现在该图标已成功转换,但是当我试图在图像查看器中打开它时,它显示预览不可用。

而且,当尝试在项目中打开它时,它说

(image.ico不是图标文件)


一个ico文件只是一个重命名的bmp文件,你是否检查过它是否保存为bmp格式? - Russ Clarke
抱歉,它被保存为JPEG格式。这有关系吗? - Zain Ali
那么使用上述方法无法将JPEG转换为图标吗? - Zain Ali
1
@Russ C,ICO 不是 BMP,尽管存储在图标中的图像二进制格式与 BMP 有关。 - Lucero
我只是基于这个链接:http://support.microsoft.com/kb/141859。 - Russ Clarke
1
Lucero 是正确的。图标使用数据的运行长度编码,但它不是相同的格式。@Russ C - 那篇 KB 文章只适用于 Windows 98 和 ME。这是一种特殊的重命名情况,在重命名文件时,Windows 会为您执行转换。 - Joe Doyle
1个回答

5

您的代码没问题。它可以将JPG转换为图标。您原始JPG的尺寸是多少?如果不是标准图标尺寸之一,可能会出现奇怪的行为。如果原始JPG太大,就会出现您看到的错误。

一些常见的尺寸包括16x16、24x24、32x32、48x48。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接