将字节数组转换为图像并尝试保存时出错
Error converting byte array to image and trying to save
我在尝试保存从字节数组转换而来的图像时收到以下错误消息,但不太确定原因。不幸的是,该错误没有提供有关实际问题的详细信息。错误和代码如下
错误:
Exception Details: System.Runtime.InteropServices.ExternalException: A generic error occurred in 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 行
上抛出
我创建了一个类似于您的代码的小测试方法,如下所示:
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
看起来不错,即如果您的应用程序在 WindowsForms
中运行,则在 PictureBox
中显示它
我在尝试保存从字节数组转换而来的图像时收到以下错误消息,但不太确定原因。不幸的是,该错误没有提供有关实际问题的详细信息。错误和代码如下
错误:
Exception Details: System.Runtime.InteropServices.ExternalException: A generic error occurred in 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 行
上抛出我创建了一个类似于您的代码的小测试方法,如下所示:
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
看起来不错,即如果您的应用程序在WindowsForms
中运行,则在
PictureBox
中显示它