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

Mat*_*len 5 c# icons encoder .net-4.0

我正在尝试将图像转换为图标。我的功能是:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当程序调用该方法时,它会抛出一个ArgumentNullException("encoder")我正在调用的地方icon.Save

我觉得这很奇怪,因为我没有传入编码器,我希望框架弄清楚编码器应该是什么,这就是我传入ImageFormat.

是没有任何编码器ImageFormat.Icon,还是我做错了什么?

Fré*_*idi 5

你猜对了正确的:GDI +只支持一个ICON 解码器

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


Sma*_*tK8 5

只需将图像转换为图标:

Icon myIcon = Icon.FromHandle(((Bitmap)myImage).GetHicon())
Run Code Online (Sandbox Code Playgroud)

然后使用流保存它:

myIcon.Save(myStream);
Run Code Online (Sandbox Code Playgroud)

问候, 凯特