天天看點

C# Byte[]、Image、Bitmap 之間的互相轉換

https://my.oschina.net/smartsmile/blog/814810

//Image轉換Bitmap             //1. Bitmap img = new Bitmap(imgSelect.Image);             //2. Bitmap bmp = (Bitmap)pictureBox1.Image;             /// <summary>             /// 将圖檔Image轉換成Byte[]             /// </summary>             /// <param name="Image">image對象</param>             /// <param name="imageFormat">字尾名</param>             /// <returns></returns>             public static byte[] ImageToBytes(Image Image, System.Drawing.Imaging.ImageFormat imageFormat)             {                 if (Image == null) { return null; }                 byte[] data = null;                 using (MemoryStream ms = new MemoryStream())                 {                     using (Bitmap Bitmap = new Bitmap(Image))                     {                         Bitmap.Save(ms, imageFormat);                         ms.Position = 0;                         data = new byte[ms.Length];                         ms.Read(data, 0, Convert.ToInt32(ms.Length));                         ms.Flush();                     }                 }                 return data;             }             /// <summary>             /// byte[]轉換成Image             /// </summary>             /// <param name="byteArrayIn">二進制圖檔流</param>             /// <returns>Image</returns>             public static System.Drawing.Image byteArrayToImage(byte[] byteArrayIn)             {                 if (byteArrayIn == null)                     return null;                 using (System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArrayIn))                 {                     System.Drawing.Image returnImage = System.Drawing.Image.FromStream(ms);                     ms.Flush();                     return returnImage;                 }             }             /// <summary>             /// byte[] 轉換 Bitmap             /// </summary>             /// <param name="Bytes">byte[]</param>             /// <returns></returns>             public static Bitmap BytesToBitmap(byte[] Bytes)             {                 MemoryStream stream = null;                 try                 {                     stream = new MemoryStream(Bytes);                     return new Bitmap((Image)new Bitmap(stream));                 }                 catch (ArgumentNullException ex)                 {                     throw ex;                 }                 catch (ArgumentException ex)                 {                     throw ex;                 }                 finally                 {                     stream.Close();                 }             }             /// <summary>             /// Bitmap轉byte[]               /// </summary>             /// <param name="Bitmap">Bitmap</param>             /// <returns></returns>             public static byte[] BitmapToBytes(Bitmap Bitmap)             {                 MemoryStream ms = null;                 try                 {                     ms = new MemoryStream();                     Bitmap.Save(ms, Bitmap.RawFormat);                     byte[] byteImage = new Byte[ms.Length];                     byteImage = ms.ToArray();                     return byteImage;                 }                 catch (ArgumentNullException ex)                 {                     throw ex;                 }                 finally                 {                     ms.Close();                 }             }