为什么Image.Save(Stream,ImageFormat)会抛出异常?

时间:2010-11-13 10:47:10

标签: c# .net-4.0 icons encoder

我正在尝试将图片转换为图标。我的职责是:

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的编码器,或者我做错了什么?

2 个答案:

答案 0 :(得分:4)

你猜对了:GDI + only supportsICON 解码器

您可能希望自己执行转换。在这种情况下,请参阅http://www.codeproject.com/KB/GDI-plus/safeicon.aspx

答案 1 :(得分:4)

只需将图片转换为图标:

Icon myIcon = Icon.FromHandle(((Bitmap)myImage).GetHicon())

然后使用stream保存它:

myIcon.Save(myStream);

的问候, 凯特