c# – 在System.Drawing.Image.Save的GDI中發生一個通用錯誤

下面方法不能不能返回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);
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章