c# – 如何获取.Net保存此图像?

我有 this jpeg,在picasa,photoshop,网络浏览器等开放,但在.Net它只是拒绝工作.
Image image = Image.FromFile(@"myimage.jpg");
 image.Save(@"myimage2.jpg");
 // ExternalException - A generic error occurred in GDI+.

有没有办法在.Net中恢复它,所以我可以使用它(我需要调整大小),而不是解决问题在源头?

完整例外细节:

source: System.Drawing 
type: System.Runtime.InteropServices.ExternalException 
message: A generic error occurred in GDI+. 
stack trace:    
at System.Drawing.Image.Save(String filename,ImageCodecInfo encoder,EncoderParameters encoderParams)
   at System.Drawing.Image.Save(String filename,ImageFormat format)
   at System.Drawing.Image.Save(String filename)
   at ConsoleApplication20.Program.Main(String[] args) in C:\Users\sam\Desktop\S
ource\ConsoleApplication20\ConsoleApplication20\Program.cs:line 16

这个问题在Windows 7上是可重复的.

解决方法

它似乎在Windows XP和Vista上正常工作,但不是Windows 7.

我找到了this issue on Microsoft Connect.它与您的问题不一样,但它看起来非常相似 – 当尝试重新保存JPEG文件时发生ExternalException.目前在16个重复,包括一些意见,问题仍然存在于最终版本.

所以它看起来不是.NET框架中的一个错误,而是Windows 7中的一个错误,特别是GdipSaveImagetoStream API中的一个错误.

解决方法,正如其他人所提到的,是强制转换为另一种格式.这就是marc和Darin的答案正在做的.在JPEG文件中显然有一些“额外的”信息触发Win7中的错误.当您转换为不同的格式或进行位图复制时,该信息(EXIF可能?)被删除.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...