我正在使用此功能将base64转换为图像。
public Image Base64ToImage(string base64String)
{
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(base64String);
using (var ms = new MemoryStream(imageBytes, 0,imageBytes.Length))
{
// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
//Image image = Image.FromStream(ms, true);
Image image = Image.FromStream(ms,true,true);
return image;
}
}
但它不起作用。请帮帮我。
答案 0 :(得分:0)
我不需要在这里写ms调用。
using (var ms = new MemoryStream(imageBytes, 0,imageBytes.Length))
{
// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
您正在有效地从byteArray构造流,因此ms.Write调用将在流中追加数据两次。这可能会导致Image对象出现问题。要么使用流的默认构造函数,要么再次删除Write和test。
编辑: Zey删除了他的答案,但我认为他在那里有一个很好的观点。您也可以考虑删除使用块。我的记忆可能会让我失望,但我认为Image对象需要让源流保持打开状态。不再需要时处理Image对象。