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()picますか? System.Drawing.Imageは を実装IDisposableしているため、コードは (おそらく) 次のようになります。

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 に答える