1

我正在使用一种简单的Image.RotateFlip()方法,C#但我不断收到错误消息“内存不足”。我通过分析器运行它,发现它发生在 System.Drawing.Image.FromFile();

这是我的代码:

 protected void rotatePic(object sender, EventArgs e)
    {
        ImageButton img = sender as ImageButton;
        string url = img.ImageUrl.Split('?')[0];

        System.Drawing.Image pic = System.Drawing.Image.FromFile(Server.MapPath(url));
        pic.RotateFlip(System.Drawing.RotateFlipType.Rotate270FlipNone);
        pic.Save(Server.MapPath(url));
        pic.Dispose();
        img.ImageUrl = img.ImageUrl + "?" + DateTime.Now.ToString();
    }
4

2 回答 2

3

您的问题缺少很多相关信息。第一的; 图像有多大。其次,如何调用此代码。是不是经常被调用?你什么 时候打电话Dispose()System.Drawing.Image implements ,所以你的代码应该(可能)看起来像这样:picIDisposable

using(var pic = System.Drawing.Image.FromFile(Server.MapPath(url)))
{
    pic.RotateFlip(System.Drawing.RotateFlipType.Rotate270FlipNone);
    pic.Save(Server.MapPath(url));
}
于 2013-02-22T23:34:15.117 回答
0

如果你多次这样做,你不应该忘记 Dispose() 你的图像。

于 2013-02-22T23:42:52.420 回答