C# Byte[]、Image、Bitmap 之间的相互转换


//byte[] 转图片  
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();  
            }  
        }   
  
//图片转byte[]   
        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();  
            }  
        }  
    }  
  
=====================  
  
* Stream 和 byte[] 之间的转换  
 * - - - - - - - - - - - - - - - - - - - - - - - */  
/// <summary>  
/// 将 Stream 转成 byte[]  
/// </summary>  
public byte[] StreamToBytes(Stream stream)  
{  
    byte[] bytes = new byte[stream.Length];  
    stream.Read(bytes, 0, bytes.Length);  
  
    // 设置当前流的位置为流的开始  
    stream.Seek(0, SeekOrigin.Begin);  
    return bytes;  
}  
  
/// <summary>  
/// 将 byte[] 转成 Stream  
/// </summary>  
public Stream BytesToStream(byte[] bytes)  
{  
    Stream stream = new MemoryStream(bytes);  
    return stream;  
}  
  
  
/* - - - - - - - - - - - - - - - - - - - - - - - -  
 * Stream 和 文件之间的转换 
 * - - - - - - - - - - - - - - - - - - - - - - - */  
/// <summary>  
/// 将 Stream 写入文件  
/// </summary>  
public 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();  
}  
  
/// <summary>  
/// 从文件读取 Stream  
/// </summary>  
public Stream FileToStream(string fileName)  
{              
    // 打开文件  
    FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);  
    // 读取文件的 byte[]  
    byte[] bytes = new byte[fileStream.Length];  
    fileStream.Read(bytes, 0, bytes.Length);  
    fileStream.Close();  
    // 把 byte[] 转换成 Stream  
    Stream stream = new MemoryStream(bytes);  
    return stream;  
}

(转)https://www.cnblogs.com/testsec/p/6095626.html

 

 /// <summary>
        /// Convert Image to Byte[]
        /// </summary>
        /// <param name="image"></param>
        /// <returns></returns>
        public static byte[] ImageToBytes(Image image)
        {
            ImageFormat format = image.RawFormat;
            using (MemoryStream ms = new MemoryStream())
            {
                if (format.Equals(ImageFormat.Jpeg))
                {
                    image.Save(ms, ImageFormat.Jpeg);
                }
                else if (format.Equals(ImageFormat.Png))
                {
                    image.Save(ms, ImageFormat.Png);
                }
                else if (format.Equals(ImageFormat.Bmp))
                {
                    image.Save(ms, ImageFormat.Bmp);
                }
                else if (format.Equals(ImageFormat.Gif))
                {
                    image.Save(ms, ImageFormat.Gif);
                }
                else if (format.Equals(ImageFormat.Icon))
                {
                    image.Save(ms, ImageFormat.Icon);
                }
                byte[] buffer = new byte[ms.Length];
                //Image.Save()会改变MemoryStream的Position,需要重新Seek到Begin
                ms.Seek(0, SeekOrigin.Begin);
                ms.Read(buffer, 0, buffer.Length);
                return buffer;
            }
        }

        /// <summary>
        /// Convert Byte[] to Image
        /// </summary>
        /// <param name="buffer"></param>
        /// <returns></returns>
        public static Image BytesToImage(byte[] buffer)
        {
            MemoryStream ms = new MemoryStream(buffer);
            Image image = System.Drawing.Image.FromStream(ms);
            return image;
        }

        /// <summary>
        /// Convert Byte[] to a picture and Store it in file
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="buffer"></param>
        /// <returns></returns>
        public static string CreateImageFromBytes(string fileName, byte[] buffer)
        {
            string file = fileName;
            Image image = BytesToImage(buffer);
            ImageFormat format = image.RawFormat;
            if (format.Equals(ImageFormat.Jpeg))
            {
                file += ".jpeg";
            }
            else if (format.Equals(ImageFormat.Png))
            {
                file += ".png";
            }
            else if (format.Equals(ImageFormat.Bmp))
            {
                file += ".bmp";
            }
            else if (format.Equals(ImageFormat.Gif))
            {
                file += ".gif";
            }
            else if (format.Equals(ImageFormat.Icon))
            {
                file += ".icon";
            }
            System.IO.FileInfo info = new System.IO.FileInfo(file);
            System.IO.Directory.CreateDirectory(info.Directory.FullName);
            File.WriteAllBytes(file, buffer);
            return file;
        }

(转)https://www.cnblogs.com/luxiaoxun/p/3378416.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM