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 ImageFormat.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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With