有了這樣的加載和存儲圖像時的年齡工作的代碼,我發現我有一個打破這個代碼的單個圖像:如何在保存圖像時找到Generic GDI +錯誤的原因?
const string i1Path = @"c:\my\i1.jpg";
const string i2Path = @"c:\my\i2.jpg";
var i = Image.FromFile(i1Path);
i.Save(i2Path, ImageFormat.Jpeg);
唯一的例外是:
System.Runtime .InteropServices.External發生的異常
GDI +中發生了一般性錯誤。
在System.Drawing.Image.Save(字符串文件名,ImageCodecInfo編碼器,EncoderParameters encoderParams)
在System.Drawing.Image.Save(字符串文件名,格式的imageformat)
在...
就我所見,圖像沒有特別之處。它大小約爲250像素,可以在例如Windows圖像查看器或Paint.NET:
(由於上面的圖片,上傳到堆棧溢出不會產生錯誤了之後,我已經把the original image here)
我發現是在調用Save
method時,目標圖像文件正在創建零字節。
我對導致錯誤的原因確實無能爲力。
我的問題:
- 你能想到的會從保存圖像阻礙.NET任何特別的東西?
- 有沒有什麼辦法(除了恐慌)來縮小這類錯誤?
MSDN說從流加載的位圖需要流保持存在,只要位圖存在。 – 2015-11-11 00:14:00
未解決您的問題:但是,如果路徑不存在,則會發生同樣的異常(我花了一段時間才弄清楚我有一個錯字)。可能幫助別人。 – 2017-05-18 08:27:25