Introduction
有的時候我們必須將 Image 物件轉為 byte[] 陣列,也可能將 byte[] 轉換為 Image 物件,
例如 : 圖檔通常都是以二進位的方式存在於資料庫,當資料撈出來時,也許會需要先轉換成 Image 的格式,再做圖片匯製或是其他處理。
Example
修改 20100113
sample1 將 Byte 陣列轉換為 Image。
////// 將 Byte 陣列轉換為 Image。 /// /// Byte 陣列。 public static Image BufferToImage(byte[] Buffer) { if (Buffer == null || Buffer.Length == 0) { return null; } byte[] data = null; Image oImage = null; Bitmap oBitmap = null; //建立副本 data = (byte[])Buffer.Clone(); try { MemoryStream oMemoryStream = new MemoryStream(Buffer); //設定資料流位置 oMemoryStream.Position = 0; oImage = System.Drawing.Image.FromStream(oMemoryStream); //建立副本 oBitmap = new Bitmap(oImage); } catch { throw; } //return oImage; return oBitmap; } sample2 將 Image 轉換為 Byte 陣列。
////// 將 Image 轉換為 Byte 陣列。 /// /// Image 。 /// 指定影像格式。 public static byte[] ImageToBuffer(Image Image, System.Drawing.Imaging.ImageFormat imageFormat) { if (Image == null) { return null; } byte[] data = null; using (MemoryStream oMemoryStream = new MemoryStream()) { //建立副本 using (Bitmap oBitmap = new Bitmap(Image)) { //儲存圖片到 MemoryStream 物件,並且指定儲存影像之格式 oBitmap.Save(oMemoryStream, imageFormat); //設定資料流位置 oMemoryStream.Position = 0; //設定 buffer 長度 data = new byte[oMemoryStream.Length]; //將資料寫入 buffer oMemoryStream.Read(data, 0, Convert.ToInt32(oMemoryStream.Length)); //將所有緩衝區的資料寫入資料流 oMemoryStream.Flush(); } } return data; }