c# – 在System.Drawing.Image.Save的GDI中发生一个通用错误

下面方法不能不能返回Image类型,否则会遇到标题的错误。因为【从Stream加载图像时,必须在图像的整个生命周期内保持流打开】,转换后的Image用到的流是streamBitmap,如果只返回image类型,也就意味着跳出了using (var streamBitmap = new System.IO.MemoryStream(bitmapData))块,流被关闭,再在外部执行Image.Save时就会有异常。
参阅MSDN Image.FromStream.

/// 
/// 将图片Base64字串表示转换为图片类型文件,并保存到本地。
/// 
/// 图片Base64字串表示
/// 文件保存位置完整路径
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);
        }
    }
}

你可能感兴趣的:(c#常用集合)