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

时间:2022-06-13 20:59:30

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

我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才能存入数据库中.

C#将image中的显示的图片转换成二进制C#将image中的显示的图片转换成二进制View Code
        //将本地图片转换成二进制保存起来
        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();
            }
        }

 

C#将image中的显示的图片转换成二进制C#将image中的显示的图片转换成二进制View Code
// 根据文件名(完全路径)
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图像文件

C#将image中的显示的图片转换成二进制C#将image中的显示的图片转换成二进制View Code
// 将数据库中的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输入流的代码如下:

C#将image中的显示的图片转换成二进制C#将image中的显示的图片转换成二进制View Code
     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赋值就可以了

 

C#将image中的显示的图片转换成二进制C#将image中的显示的图片转换成二进制View Code
           byte[] bb = SetImageToByteArray(textBox1.Text);
            System.Drawing.Image img = ReturnPhoto(bb);
            pictureBox1.Image = img;