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

时间:2016-04-12 15:15:19

标签: c# image base64

我在尝试保存从字节数组转换的图像时收到以下错误,但不太清楚为什么。不幸的是,错误并未提供有关实际问题的详细信息。错误和代码

错误:

  

异常详细信息: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行

上抛出此错误

1 个答案:

答案 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中显示