C#/.net中出現 "GDI+中發生一般性錯誤"解決方案


有時我們在讀取本地圖片,調用 Image.Save() 方法,將其另保存為其他格式時,經常會碰到一個錯誤:“GDI+中發生一般性錯誤”;一般出現這種錯誤有 3 種可能:

1.保存路徑不存在或者錯誤;

2.權限問題

3.“Bitmap 對象或一個 圖像 對象從一個文件, 構造時該文件仍保留鎖定對於對象的生存期。 因此, 無法更改圖像並將其保存回它產生相同的文件”

對於,1、2問題就不多說了,針對問題3,一般我們重新保存一份圖片,也就2行代碼
 

1  var img = Image.FromFile(imgpath);
2  img.Save(newPath, System.Drawing.Imaging.ImageFormat.Jpeg);

如果是由於問題 3 導致的報錯,可以采用如下方式,重繪圖片:

 1   var oldImg = new Bitmap(item);
 2   Bitmap img = new Bitmap(oldImg);
 3   Graphics draw = Graphics.FromImage(img);
 4   draw.DrawImage(oldImg, 0, 0, oldImg.Width, oldImg.Height);
 5   oldImg.Dispose();
 6   newPath = $"{goalDir}{item.Replace(basePath, "").Replace(".bmp", ".jpg")}";
 7   string newDir = Path.GetDirectoryName(newPath);
 8   if (!Directory.Exists(newDir))
 9   {
10       Directory.CreateDirectory(newDir);
11   }
12   img.Save(newPath, System.Drawing.Imaging.ImageFormat.Jpeg);
13   img.Dispose();

這樣基本就能解決問題了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM