Image.Save(Stream s,ImageFormat f)的正确实现是什么?

时间:2015-07-22 13:19:39

标签: c# image xna

我编写了以下代码,目的是将System.Drawing.Image转换为Microsoft.Xna.Framework.Graphics.Texture2D。

public Texture2D convertImage(Image img)
    {
        if (parent == null)
        {
            return null;
        }
        if (img == null)
        {
            return null;
        }

        //make a new Texture2D
        Stream mystream = ToStream(img, ImageFormat.Png);
        Texture2D tex = Texture2D.FromStream(parent.GraphicsDevice, mystream);

        return tex;
    }

    private Stream ToStream(Image img, ImageFormat f)
    {
        var stream = new MemoryStream();
        img.Save(stream, f);
        stream.Position = 0;
        return stream;
    }

Parent指的是调用该函数的Microsoft.Xna.Framework.Game,问题是没有编译错误,但是当代码运行时,程序抛出ArgumentException“参数无效”。在第22行。我无法解决问题所在,我只能假设我使用代码的方式有问题。

传递给该函数的图像是标准图像,我可以使用“ img.Save(filname); ”将其保存到文件中,只有在我尝试时才会出现错误保存到流中。

更新 似乎问题是System.Drawing.Image在我调用Image.Save()之前被处理掉,这导致所有的Image参数都返回“参数异常发生。参数无效。”,所以要详细说明我原来的问题,在完成使用之前,如何阻止物体被丢弃?

感谢您的帮助。

0 个答案:

没有答案