2015-06-06 57 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(字符串文件名,格式的imageformat)在System.Drawing.Image.Save(字符串文件名)

有時出現以下錯誤

System.OutOfMemoryException:內存不足。在 System.Drawing.Image.FromFile(字符串文件名,布爾 useEmbeddedColorManagement)在System.Drawing.Image.FromFile(字符串 文件名)

我讀到這個錯誤的所有文章和解決方案,並沒有什麼工作。有些人說:「確保所需的文件夾具有讀/寫權限」 。 它有權限..

有人說,「你必須處置圖像對象釋放服務器上的內存。」 , 我已經有了代碼img.Dispose();釋放圖像文件,

代碼中可能存在什麼問題?有什麼建議?

+1

(http://stackoverflow.com/questions/10984336 [你try catch塊的結尾使用最後] /淨使用塊的VS調用處置)或嘗試[使用語句](http://stackoverflow.com/questions/2808753/right-way-to-dispose-image-bitmap-and-picturebox )。我很好奇,你讀過什麼文章? – lloyd

+1

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

所以你認爲我必須把它放在裏面使用?喜歡這個? .... 使用(IMG爲System.Drawing.Image = System.Drawing.Image.FromFile(路徑)) { //旋轉圖像 img.RotateFlip(RotateFlipType.Rotate180FlipXY); //將圖像保存到文件中 img.Save(path); //發佈圖像文件 img.Dispose(); } – amal50

回答

0

我改變了這個(Rotate180FlipXY)至(Rotate180FlipNone)後,問題已經解決

相關問題