开发者

Why is Image.Save(Stream, ImageFormat) throwing an exception?

I am trying to convert an image to an icon. My function is:

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);
    }
}

But when the programme calls the method, it throws an ArgumentNullException("encoder") where I'm calling icon.Save.

I find this odd because I'm not passing in an encoder, I want the framework to figure out what the encoder should be, which is why I'm passing in an ImageFormat.

Is it that there aren't any encoders for ImageFor开发者_如何学Pythonmat.Icon, or is there something I'm doing wrong?


You guessed it right: GDI+ only supports an ICON decoder.

You might want to perform the conversion yourself. In that case, see http://www.codeproject.com/KB/GDI-plus/safeicon.aspx.


Just convert image to icon:

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

and then save it using stream:

myIcon.Save(myStream);

regards, Kate

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜