我在尝试保存从字节数组转换的图像时收到以下错误,但不太清楚为什么。不幸的是,错误并未提供有关实际问题的详细信息。错误和代码
错误:
异常详细信息:System.Runtime.InteropServices.ExternalException:GDI +中发生一般错误。
和代码:
byte[] imageBytes = Convert.FromBase64String(base64string);
Image image;
MemoryStream ms = new MemoryStream(imageBytes);
image = Image.FromStream(ms);
image.Save("testImage.png", System.Drawing.Imaging.ImageFormat.Png);
编辑:在image.Save行
上抛出此错误答案 0 :(得分:1)
我创建了一个类似于您的代码的小测试方法,如下所示:
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
image.Save(ms, System.Drawing.Imaging.ImageFormat.Tiff);
string base64String = Convert.ToBase64String(ms.ToArray());
//Your code
byte[] imageBytes = Convert.FromBase64String(base64String);
System.IO.MemoryStream ms2 = new System.IO.MemoryStream(imageBytes);
image = Image.FromStream(ms2);
image.Save("testImage.tif", System.Drawing.Imaging.ImageFormat.Tiff);
}
我的代码与您的代码的唯一区别在于它使用.tif图像作为输入来获取base64String
。
当我测试它时它工作正常而没有错误,因此我建议你检查一些事情:
testImage.png
未被其他进程锁定base64String
有效,不提供错误image
看起来很好,例如,如果您的应用程序在PictureBox
中运行,则会在WindowsForms
中显示1>