隐藏

在C#将image中的显示的图片转换成二进制

发布:2023/12/7 15:59:37作者:管理员 来源:本站 浏览次数:455

1.将Image图像文件存入到数据库中


//将本地图片转换成二进制保存起来

       private byte[] SetImageToByteArray(string fileName)

       {

           FileStream fs = null;

           try

           {

               fs = new FileStream(fileName, FileMode.Open, System.IO.FileAccess.Read, FileShare.ReadWrite);

               Bitmap bt = new Bitmap(fs);

               int streamLength = (int)fs.Length;

               byte[] image = new byte[streamLength];

               fs.Read(image, 0, streamLength);


               return image;

           }

           catch (Exception)

           {


               throw;


           }

           finally

           {


               fs.Close();

           }

       }


//根据文件名(完全路径)

public byte[] SetImageToByteArray(string fileName)

   {

       FileStream fs = new FileStream(fileName, FileMode.Open, System.IO.FileAccess.Read, FileShare.ReadWrite);

       int streamLength = (int)fs.Length;

       byte[] image = new byte[streamLength];

       fs.Read(image, 0, streamLength);

       fs.Close();

       return image;

   }


//另外,在ASP.NET中通过FileUpload控件得到的图像文件可以通过以下方法

public byte[] SetImageToByteArray(FileUpload FileUpload1)

   {

       Stream stream = FileUpload1.PostedFile.InputStream;

       byte[] photo = new byte[FileUpload1.PostedFile.ContentLength];

       stream.Read(photo, 0, FileUpload1.PostedFile.ContentLength);

       stream.Close();

       return photo;

   }



  


2.从SQL Server数据库读取Image类型的数据,并转换成bytes[]或Image图像文件


//将数据库中的Image类型转换成byte[]

       public byte[] SetImage(SqlDataReader reader)

       {

           return (byte[])reader["Image"];//Image为数据库中存放Image类型字段

       }


//将byte[]转换成Image图像类型

//加载以下命名空间using System.Drawing;/using System.IO;

using System.Data.SqlClient;

  public Image SetByteToImage(byte[] mybyte)

  {

          Image image;

            MemoryStream mymemorystream = new MemoryStream(mybyte,0, mybyte.Length);

          image = Image.FromStream(mymemorystream);

          return image;

   }


 


这种方式保存图片比较安全


大致的步骤,就是我们首先要获得文件的路径,无论是通过上传控件和文本框,还是手动输入等,只要能获得路径就可以了


然后我们就可以利用上面的方法,将文件资源转换为二进制放到数据库里,数据库字段可以使用image类型,或者字符串,到时候转换下就可以了


最后我们就可以从数据库中读取字节,转换成image,或者以流的方式输出图片都可以了(这种一般用于asp.net输入图片)


asp.net输入流的代码如下:


protected void Page_Load(object sender, EventArgs e)

       {

           byte[] bb = SetImageToByteArray("E:\\regedit.jpg");

           System.Drawing.Image img = ReturnPhoto(bb);

           //设定输出文件的类型

           Response.ContentType = "image/jpg";

           //输出图片文件二进制数据

           Response.BinaryWrite(bb);

       }


  


如果是winForm就可以直接通过转换过的image赋值就可以了


byte[] bb = SetImageToByteArray(textBox1.Text);

           System.Drawing.Image img = ReturnPhoto(bb);

           pictureBox1.Image = img;