我正在尝试将图片转换为图标。我的职责是:
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
的编码器,或者我做错了什么?
答案 0 :(得分:4)
你猜对了:GDI + only supports和ICON
解码器。
您可能希望自己执行转换。在这种情况下,请参阅http://www.codeproject.com/KB/GDI-plus/safeicon.aspx。
答案 1 :(得分:4)
只需将图片转换为图标:
Icon myIcon = Icon.FromHandle(((Bitmap)myImage).GetHicon())
然后使用stream保存它:
myIcon.Save(myStream);
的问候, 凯特