我有一個在我的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();釋放圖像文件,
代碼中可能存在什麼問題?有什麼建議?
(http://stackoverflow.com/questions/10984336 [你try catch塊的結尾使用最後] /淨使用塊的VS調用處置)或嘗試[使用語句](http://stackoverflow.com/questions/2808753/right-way-to-dispose-image-bitmap-and-picturebox )。我很好奇,你讀過什麼文章? – lloyd
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –
所以你認爲我必須把它放在裏面使用?喜歡這個? .... 使用(IMG爲System.Drawing.Image = System.Drawing.Image.FromFile(路徑)) { //旋轉圖像 img.RotateFlip(RotateFlipType.Rotate180FlipXY); //將圖像保存到文件中 img.Save(path); //發佈圖像文件 img.Dispose(); } – amal50