我对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);
这显然是不同的方式。所以有两个问题:
答案 0 :(得分:0)
正确的方法是使用原始Bitmap.Save(Filename)
,但你缺少ImageFormat变量,它基本上会从指定格式的图像对象进行实际转换。
目前,您使用它的方式会产生一个名为“somefile.somextension”的文件,但不具有图标对象的实际内容。
最好的方法是使用:
Bitmap.Save(String, ImageFormat)
例如,要保存.ico文件:
Bitmap.Save(String, System.Drawing.Imaging.ImageFormat.Icon)
希望这会有所帮助,祝你好运。