为啥 Image.Save(Stream, ImageFormat) 会抛出异常?
Posted
技术标签:
【中文标题】为啥 Image.Save(Stream, ImageFormat) 会抛出异常?【英文标题】:Why is Image.Save(Stream, ImageFormat) throwing an exception?为什么 Image.Save(Stream, ImageFormat) 会抛出异常? 【发布时间】:2011-05-09 11:56:19 【问题描述】:我正在尝试将图像转换为图标。我的功能是:
private Icon GenerateIcon(int width, int height)
using (Bitmap icon = _backingImage.GetThumbnailImage(width, height, () => false, System.IntPtr.Zero) as Bitmap)
using(MemoryStream imgStream = new MemoryStream())
icon.Save(imgStream, System.Drawing.Imaging.ImageFormat.Icon);
return new Icon(imgStream);
但是当程序调用该方法时,它会抛出一个ArgumentNullException("encoder")
我正在调用icon.Save
。
我觉得这很奇怪,因为我没有传递编码器,我希望框架弄清楚编码器应该是什么,这就是我传递ImageFormat
的原因。
是ImageFormat.Icon
没有任何编码器,还是我做错了什么?
【问题讨论】:
@abatishchev:British spell programme 就是这样:p 【参考方案1】:您猜对了:GDI+ only supports 和 ICON
解码器。
您可能希望自己执行转换。在这种情况下,请参阅http://www.codeproject.com/KB/GDI-plus/safeicon.aspx。
【讨论】:
【参考方案2】:只需将图像转换为图标:
Icon myIcon = Icon.FromHandle(((Bitmap)myImage).GetHicon())
然后使用流保存它:
myIcon.Save(myStream);
问候, 凯特
【讨论】:
谢谢,SmartK8。我知道这一点,但它在部分信任场景中不起作用。以上是关于为啥 Image.Save(Stream, ImageFormat) 会抛出异常?的主要内容,如果未能解决你的问题,请参考以下文章
请问Python中的image.save命令怎么使用?会有啥效果