下面方法不能不能返回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);
}
}
}