将位图保存为任何格式

时间:2015-12-03 14:05:47

标签: c# bitmap save file-extension

我对C#保存位图的方式感到困惑。我目前使用此语句将位图保存到(虚拟)任何扩展名(.ico,.dds等)。

Bitmap.Save(FileName);

这实际上适用于我选择的任何扩展程序,但我怀疑它是否以正确的格式保存。上述怀疑的原因是因为我在这里发现了另一篇文章, How to save Bitmap as icon?,就像这样:

// Create a Bitmap object from an image file.
Bitmap bmp = new Bitmap(sFn);

// Get an Hicon for myBitmap. 
IntPtr Hicon = bmp.GetHicon();

// Create a new icon from the handle. 
 Icon newIcon = Icon.FromHandle(Hicon);

//Write Icon to File Stream
System.IO.FileStream fs = new System.IO.FileStream(destFileName, System.IO.FileMode.OpenOrCreate);
newIcon.Save(fs);

这显然是不同的方式。所以有两个问题:

  1. 如果第二种方法是“正确的”方式,第一种方法如何工作?
  2. 我是否需要为我希望支持的每个扩展程序自定义保存属性,或者是第一种足以进行任何扩展的方法?

1 个答案:

答案 0 :(得分:0)

正确的方法是使用原始Bitmap.Save(Filename),但你缺少ImageFormat变量,它基本上会从指定格式的图像对象进行实际转换。

目前,您使用它的方式会产生一个名为“somefile.somextension”的文件,但不具有图标对象的实际内容。

最好的方法是使用:

Bitmap.Save(String, ImageFormat)

例如,要保存.ico文件:

Bitmap.Save(String, System.Drawing.Imaging.ImageFormat.Icon)

希望这会有所帮助,祝你好运。