代码之家  ›  专栏  ›  技术社区  ›  Matt Ellen Bipin Vayalu

为什么Image.Save(Stream,ImageFormat)引发异常?

  •  3
  • Matt Ellen Bipin Vayalu  · 技术社区  · 15 年前

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

    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 回复  |  直到 15 年前
        1
  •  4
  •   Frédéric Hamidi    15 年前

    你猜对了:GDI+ only supports 一个 ICON 解码器 .

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

        2
  •  4
  •   SmartK8    15 年前

    只需将图像转换为图标:

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

    然后使用流保存它:

    myIcon.Save(myStream);
    

    当做, 凯特

    推荐文章