在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图像。
编辑:请注意,我只是从浏览器获得数据图像字符串(我通过浏览器的剪贴板捕获),即我没有从客户端获得字节。
转换为图像流然后保存回物理文件的字节数有限制吗?
是否有其他方法可以做到这一点?
在这里似乎没有任何理由去讨论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;
}