由於很多時候在存取圖片時
需要透過Byte[]來做存取或編輯
這時就會需要用到Image轉Byte或是Byte轉Image的功能
最近看到的兩個現成的轉換方法
撿到寶似的快點記錄下來XD
1.將 Image 轉換為 Byte 陣列
1: using System.IO;
2: using System.Drawing;
3:
4: /// 將 Image 轉換為 Byte 陣列。
5: /// 參數1:Image 。
6: /// 參數2:指定影像格式。
7: public static byte[] ImageToBuffer(Image Image, System.Drawing.Imaging.ImageFormat imageFormat)
8: {
9: if (Image == null) { return null; }
10: byte[] data = null;
11: using (MemoryStream oMemoryStream = new MemoryStream())
12: {
13: //建立副本
14: using (Bitmap oBitmap = new Bitmap(Image))
15: {
16: //儲存圖片到 MemoryStream 物件,並且指定儲存影像之格式
17: oBitmap.Save(oMemoryStream, imageFormat);
18: //設定資料流位置
19: oMemoryStream.Position = 0;
20: //設定 buffer 長度
21: data = new byte[oMemoryStream.Length];
22: //將資料寫入 buffer
23: oMemoryStream.Read(data, 0, Convert.ToInt32(oMemoryStream.Length));
24: //將所有緩衝區的資料寫入資料流
25: oMemoryStream.Flush();
26: }
27: }
28: return data;
29: }
2.將 Byte 陣列 轉換為 Image
1: using System.IO;
2: using System.Drawing;
3:
4: public static Image BufferToImage(byte[] Buffer)
5: {
6: if (Buffer == null || Buffer.Length == 0) { return null; }
7: byte[] data = null;
8: Image oImage = null;
9:
10: //建立副本
11: data = (byte[])Buffer.Clone();
12: try
13: {
14: MemoryStream oMemoryStream = new MemoryStream(Buffer);
15: //設定資料流位置
16: oMemoryStream.Position = 0;
17: oImage = System.Drawing.Image.FromStream(oMemoryStream);
18: }
19: catch
20: {
21: throw;
22: }
23:
24: return oImage;
25: }
全站熱搜
留言列表