我有一个能够长期加载和存储图像的代码,但我发现只有一张图片会导致代码出错:
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.ExternalException 发生
在GDI+中发生通用错误。
位于 System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
at System.Drawing.Image.Save(String filename, ImageFormat format)
at ...
就我所看到的,这张图片没有任何特别之处。它大约有250像素大小,并且可以在Windows图像查看器或Paint.NET中打开:
(由于上面的图片上传到Stack Overflow后不再产生错误,因此我放了原始图片的链接)
我发现调用Save
方法时,目标图像文件会被创建为零字节。
我真的不知道是什么原因导致了这个错误。
我的问题:
- 您能想到任何特殊的事情会阻止.NET保存图片吗?
- 除了恐慌外,还有什么方法可以缩小这些错误的范围吗?