【发布时间】:2013-03-12 08:23:40
【问题描述】:
有一个代码在加载和存储图像时可以使用很长时间,我发现我有一个图像破坏了这个代码:
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(字符串文件名,ImageCodecInfo 编码器,EncoderParameters 编码器参数)
在 System.Drawing.Image.Save(字符串文件名,ImageFormat 格式)
在...
据我所知,这张图片并没有什么特别之处。它的大小约为 250 像素,可以在例如Windows 图像查看器或 Paint.NET:
(由于上图,上传到 Stack Overflow 后就不再报错了,我放了the original image here)
我发现在调用Save method 时,目标图像文件被创建为零字节。
我真的不知道是什么导致了错误。
我的问题:
- 您能想到任何会阻碍 .NET 保存图像的特殊情况吗?
- 是否有任何方法(除了恐慌)来缩小此类错误的范围?
【问题讨论】:
-
MSDN 说从 Stream 加载的 Bitmap 要求 Stream 保持存在,只要 Bitmap 存在。
-
与您的问题无关:但是如果路径不存在,则会发生相同的异常(我花了一段时间才发现我有错字)。可能会帮助别人。
标签: c# .net image gdi+ system.drawing