将字节数组转换为图像并尝试保存时出错

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 中显示它