c#base64字符串轉圖片用到了bitmap類,封裝 GDI+ 位圖,此位圖由圖形圖像及其特性的像素數據組成。 Bitmap 是用於處理由像素數據定義的圖像的對象。
具體bitmap類是什么可以自己百度查詢,這里就不多介紹了。
#region base64轉圖片
/// <summary>
/// 圖片上傳 Base64解碼
/// </summary>
/// <param name="dataURL">Base64數據</param>
/// <param name="imgName">圖片名字</param>
/// <returns>返回一個相對路徑</returns>
public string decodeBase64ToImage(string dataURL,string imgName)
{
string filename = "";//聲明一個string類型的相對路徑
String base64 = dataURL.Substring(dataURL.IndexOf(",") + 1); //將‘,’以前的多余字符串刪除
System.Drawing.Bitmap bitmap = null;//定義一個Bitmap對象,接收轉換完成的圖片
try//會有異常拋出,try,catch一下
{
byte[] arr = Convert.FromBase64String(base64);//將純凈資源Base64轉換成等效的8位無符號整形數組
System.IO.MemoryStream ms = new System.IO.MemoryStream(arr);//轉換成無法調整大小的MemoryStream對象
bitmap = new System.Drawing.Bitmap(ms);//將MemoryStream對象轉換成Bitmap對象
filename ="Knowledge_" + imgName + ".jpg";//所要保存的相對路徑及名字
string url =HttpRuntime.AppDomainAppPath.ToString();
string tmpRootDir = System.Web.HttpContext.Current.Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString()); //獲取程序根目錄
string imagesurl2 = tmpRootDir + filename; //轉換成絕對路徑
bitmap.Save(imagesurl2, System.Drawing.Imaging.ImageFormat.Jpeg);//保存到服務器路徑
//bitmap.Save(filePath + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);
//bitmap.Save(filePath + ".gif", System.Drawing.Imaging.ImageFormat.Gif);
//bitmap.Save(filePath + ".png", System.Drawing.Imaging.ImageFormat.Png);
ms.Close();//關閉當前流,並釋放所有與之關聯的資源
bitmap.Dispose();
}
catch (Exception e)
{
string massage= e.Message;
}
return filename;//返回相對路徑
}
#endregion
#region 圖片轉base64
/// <summary>
/// 圖片轉base64
/// </summary>
/// <param name="path">圖片路徑</param>
/// <returns>返回一個base64字符串</returns>
public string decodeImageToBase64(string path) {
path = "E:/vs 2015/newaqtcprj/WEB/UpFile/2018/12/20181229174708_7471722c425a2ec08fa513ddf4f8c76306d55fbb0fbd9d8.jpg";
string base64str = "";
//站點文件目錄
string fileDir = HttpContext.Current.Server.MapPath("/");
string[] arrfileDir = fileDir.Split('\\');
fileDir = arrfileDir[0] + "\\" + arrfileDir[1] + "\\" + arrfileDir[2];
try
{
//讀圖片轉為Base64String
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(Path.Combine(fileDir, "WEB\\UpFile\\2018\\12\\20181229174708_7471722c425a2ec08fa513ddf4f8c76306d55fbb0fbd9d8.jpg"));
//System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(path);
MemoryStream ms = new MemoryStream();
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(arr, 0, (int)ms.Length);
ms.Close();
bmp.Dispose();
base64str = Convert.ToBase64String(arr);
}
catch (Exception e)
{
string mss = e.Message;
}
return "data:image/jpg;base64," + base64str;
}
#endregion
