【问题标题】:Why is Image.Save(Stream, ImageFormat) throwing an exception?为什么 Image.Save(Stream, ImageFormat) 会抛出异常?
【发布时间】:2011-05-09 11:56:19
【问题描述】:

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

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 没有任何编码器,还是我做错了什么?

【问题讨论】:

标签: c# .net-4.0 icons encoder


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    只需将图像转换为图标:

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

    然后使用流保存它:

    myIcon.Save(myStream);
    

    问候, 凯特

    【讨论】:

    • 谢谢,SmartK8。我知道这一点,但它在部分信任场景中不起作用。
    猜你喜欢
    • 1970-01-01
    • 2021-04-28
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 2015-12-24
    相关资源
    最近更新 更多