下面方法不能不能返回Image类型,否则会遇到标题的错误。因为【从Stream加载图像时,必须在图像的整个生命周期内保持流打开】,转换后的Image用到的流是streamBitmap,如果只返回image类型,也就意味着跳出了using (var streamBitmap = new System.IO.MemoryStream(bitmapData))
块,流被关闭,再在外部执行Image.Save时就会有异常。
参阅MSDN Image.FromStream.
/// <summary>
/// 将图片Base64字串表示转换为图片类型文件,并保存到本地。
/// </summary>
/// <param name="imageBase64Text">图片Base64字串表示</param>
/// <param name="saveFullPath">文件保存位置完整路径</param>
public void Base64ToImage(string imageBase64Text,string saveFullPath)
{
byte[] bitmapData = new byte[imageBase64Text.Length];
bitmapData = Convert.FromBase64String(imageBase64Text);
Image img;
using (var streamBitmap = new System.IO.MemoryStream(bitmapData))
{
using (img = Image.FromStream(streamBitmap))
{
img.Save(saveFullPath);
}
}
}