在GDI+中将数据图像字符串转换为图像时发生了一个通用错误

本文关键字:图像 一个 错误 发生了 GDI+ 数据 字符串 转换 | 更新日期: 2023-09-27 18:17:51

我试图将图像日期保存到物理文件

下面是我从jpeg图像(通过一些浏览器响应)获得的图像数据:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEASABIAAD/.....blah blah .....//2Q==
下面是我用来保存图像数据字符串到image 的代码
Image image = LoadImage(dataURL);
image.Save(saveLocation);
image.Dispose();
public Image LoadImage(string imageString)
{
    imageString = imageString.Substring(imageString.IndexOf(',') + 1);
    byte[] bytes = Convert.FromBase64String(imageString);
    Image image;
    using (MemoryStream ms = new MemoryStream(bytes))
    {
        image = Image.FromStream(ms);
    }
    return image;
}

image.Save(saveLocation); line

处获得以下异常

GDI+出现一般性错误。

我没有问题,当图像源与png图像具有相同的代码,但与jpeg图像无论什么大小的jpeg是我得到的异常每次。

我可以用相同的代码在相同的位置保存png图像。

编辑:请注意,我只是从浏览器获得数据图像字符串(我通过浏览器的剪贴板捕获),即我没有从客户端获得字节。

转换为图像流然后保存回物理文件的字节数有限制吗?

是否有其他方法可以做到这一点?

在GDI+中将数据图像字符串转换为图像时发生了一个通用错误

在这里似乎没有任何理由去讨论Image

假设发布的数据是有效的,只需将内容直接写入文件:

SaveImage(dataURL, saveLocation);
public bool SaveImage(string imageString, string location)
{
    try {
        imageString = imageString.Substring(imageString.IndexOf(',') + 1);
        byte[] bytes = Convert.FromBase64String(imageString);
        using (FileStream fs = new FileStream(location, FileMode.Create))
        {
            fs.Write(bytes, 0, bytes.Count);
        }
    }
    catch(Exception)
    {
        return false;
    }
    return true;
}