C#中base64 bytes[] Stream之間的相互轉換以及PDF轉成圖片
阿新 • • 發佈:2019-01-27
最近工作中遇到需要訪問外部webservice服務對圖片和檔案進行處理和轉換,現在將其中一些經常使用到的方法做一下筆記
場景一:
使用webservice返回圖片內容,然後進行處理,為了方便,現在大多使用base64字串的形式進行傳遞,這樣就涉及到各種轉換,現在將可能使用到的方法進行一個記錄。
// <summary>
/// 將bytes資料轉換為stream
/// </summary>
/// <param name="fileName">要儲存成的檔案路徑</param>
/// <param name="dataBytes"> 要儲存的資料</param>
/// <returns></returns>
public static Stream BytesToStream(string fileName, byte[] dataBytes)
{
if (dataBytes == null)
{
return null;
}
//MemoryStream ms = new MemoryStream(dataBytes);
using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate))
{
fs.Write(dataBytes, 0, dataBytes.Length);
return fs;
}
}
/// <summary>
/// Stream轉換為檔案
/// </summary>
/// <param name="stream"></param>
/// <param name="fileName"></param>
public static void StreamToFile(Stream stream, string fileName)
{
// 把 Stream 轉換成 byte[]
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 設定當前流的位置為流的開始
stream.Seek(0, SeekOrigin.Begin);
// 把 byte[] 寫入檔案
FileStream fs = new FileStream(fileName, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(bytes);
bw.Close();
fs.Close();
}
public static byte[] Base64ToBytes(string base64Img)
{
if (!string.IsNullOrEmpty(base64Img))
{
byte[] bytes = Convert.FromBase64String(base64Img);
return bytes;
}
return null;
}
/// <summary>
/// base64 轉換為圖片
/// </summary>
/// <param name="base64"></param>
/// <returns></returns>
public static System.Drawing.Bitmap Base64ToImage(string base64)
{
if (!string.IsNullOrEmpty(base64))
{
byte[] bytes = Base64ToBytes(base64);
if (bytes == null)
return null;
System.IO.MemoryStream ms = new MemoryStream();
ms.Write(bytes, 0, bytes.Length);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(ms);
return bmp;
}
return null;
}
場景二:
客戶通過webservice返回的是一個PDF檔案,需要我們將PDF轉換成圖片(不知道客戶怎麼想的,也沒辦法,只能照辦),查詢資料後,確實有這樣的第三方庫,主要是用到O2S.Components.PDFRender4NET.dll這個庫,具體測試程式碼連結如下
將PDF轉為圖片程式碼 密碼 dxjf