我在C#
中使用了简单的Image.RotateFlip()
方法,但我不断收到一条错误,指出“内存不足”。我运行它通过一个分析器,发现它发生在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();
}
图像有多大? – Quibblesome 2013-02-22 23:31:26
@Quibblesome他们总是不同,但最大的是4MB以下。 – 2013-02-22 23:34:01
很可能OOM是真实的。那就是你正在运行OOM,特别是如果Ed S是正确的,而且你没有正确处理图像。找出(如果它在代码中不明显)的最好方法是附加.NET内存分析器并检查堆。虽然我在System.Drawing中遇到过不正确的OOM,但它们通常位于具有定制性差的操作系统的移动设备上。因此,在认为API可能不合适之前,先对其进行配置并三重检查您的代码。 – Quibblesome 2013-02-22 23:36:18