当我尝试使用 BinaryFormatter 对一些图像进行序列化时,我会得到一个 ExternalException - GDI+ 中发生一般错误。” 在摸索了一会儿之后,我决定创建一个简单的测试项目来缩小问题范围:
static void Main(string[] args)
{
string file = @"C:\temp\delme.jpg";
//Image i = new Bitmap(file);
//using(FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))
byte[] data = File.ReadAllBytes(file);
using(MemoryStream originalms = new MemoryStream(data))
{
using (Image i = Image.FromStream(originalms))
{
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
// Throws ExternalException on Windows 7, not Windows XP
bf.Serialize(ms, i);
}
}
}
}
对于特定的图像,我尝试了各种加载图像的方法,即使以管理员身份运行程序,我也无法让它在 Windows 7 下工作。
我已将完全相同的可执行文件和映像复制到我的 Windows XP VMWare 实例中,我没有任何问题。
任何人都知道为什么某些图像在 Windows 7 下无法运行,但在 XP 下运行?
这是其中一张图片: http ://www.2shared.com/file/7wAXL88i/SO_testimage.html
delme.jpg md5: 3d7e832db108de35400edc28142a8281