好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#byte数组与Image的相互转换实例代码

C#byte数组与Image的相互转换实例代码

功能需求:

1、把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库。

2、把从数据库读取的byte数组转换为Image对象,赋值给相应的控件显示。

3、从图片byte数组得到对应图片的格式,生成一张图片保存到磁盘上。

这里的Image是System.Drawing.Image。

?

//Get an image from file

   Image image = Image.FromFile( "D:\\test.jpg" );

   Bitmap bitmap = new Bitmap( "D:\\test.jpg" );

以下三个函数分别实现了上述三个需求:

?

using System;

using System.Collections.Generic;

using System.Drawing;

using System.Drawing.Imaging;

using System.IO;

using System.Linq;

using System.Text;

 

namespace NetUtilityLib

{

   public static class ImageHelper

   {

     /// <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;

     }

   }

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

原文链接:http://blog.csdn.net/u013816709/article/details/50695713

dy("nrwz");

查看更多关于C#byte数组与Image的相互转换实例代码的详细内容...

  阅读:41次