有時我們在讀取本地圖片,調用 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();
這樣基本就能解決問題了。
