2015-06-06 6 views
1

У меня есть код, который повернуть изображение в моем asp.net C# приложения это мой код:System.Runtime.InteropServices.ExternalException: Произошла общая ошибка в GDI +

protected void ImgBtn180_Click(object sender, ImageClickEventArgs e) 
{ 
    try 
    { 
     string vImageName = LblFarmId.Text; 

     string vPath = "~/attachments/survey/" + vImageName + ".jpg"; 

     Image1.ImageUrl = vPath; 

     //get the path to the image 
     string path = Server.MapPath(vPath); 

     //create an image object from the image in that path 
     System.Drawing.Image img = System.Drawing.Image.FromFile(path); 

     //rotate the image 
     img.RotateFlip(RotateFlipType.Rotate180FlipXY); 

     //save the image out to the file 
     img.Save(path); 

     //release image file 
     img.Dispose(); 

     Random rnd = new Random(); 
     Image1.ImageUrl = vPath + "?" + rnd; 

    } 
    catch (Exception ee) 
    { 
     LblCatchError.Text = ee.ToString(); 
    } 
} 

, когда я запускаю его на сервер, я иногда получаю ошибку

System.Runtime.InteropServices.ExternalException: Общая ошибка произошла в GDI +. в System.Drawing.Image.Save (Строка имени файла, ImageCodecInfo кодировщика, EncoderParameters encoderParams) в System.Drawing.Image.Save (String имя файла, формат ImageFormat) в System.Drawing.Image.Save (String имя файла)

, а иногда и погрешность

System.OutOfMemoryException: Недостаточно памяти. в System.Drawing.Image.FromFile (String имя файла, Boolean useEmbeddedColorManagement) в System.Drawing.Image.FromFile (Строка имя файла)

Я прочитал все статьи и решения по поводу этой ошибки, и ничего не получалось. Некоторые сказали: «Убедитесь, что в требуемой папке есть разрешения на чтение/запись». имеет разрешения ..

некоторые сказали: «вы должны удалить объект изображения, чтобы освободить память на сервере». , У меня уже есть код img.Dispose(); для выпуска файла изображения,

В чем может быть проблема в коде? любой совет?

+1

[использовать, наконец, в конце вашего улова блока TRY] (http://stackoverflow.com/questions/10984336/net-using-using-blocks-vs-call-dispose) или попробуйте использовать [using statement] (http://stackoverflow.com/questions/2808753/right-way-to-dispose-image-bitmap-and-picturebox). Мне любопытно, какие статьи вы прочитали об этом? – lloyd

+1

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

, так что вы думаете, что я должен использовать его внутри? как это? .... using (System.Drawing.Image img = System.Drawing.Image.FromFile (путь)) { // вращать изображение img.RotateFlip (RotateFlipType.Rotate180FlipXY); // сохранить изображение в файле img.Save (path); // релиз файла изображения img.Dispose(); } – amal50

ответ

0

Я изменил это (Rotate180FlipXY) к (Rotate180FlipNone) и после того, что проблема была решена

Смежные вопросы