zoukankan      html  css  js  c++  java
  • [转]C#将image中的显示的图片转换成二进制

    本文转自:http://www.cnblogs.com/shuang121/archive/2012/07/09/2582654.html

    1.将Image图像文件存入到数据库中
    
    我们知道数据库里的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;
    
     
    
    
     
  • 相关阅读:
    java线程(1)-线程同步
    Scala:(3)数组
    Codeforces 899F Letters Removing
    拼图游戏的可解性
    Hash
    哈夫曼编码
    莫比乌斯
    FFT
    Ropes
    区间合并
  • 原文地址:https://www.cnblogs.com/freeliver54/p/3793970.html
Copyright © 2011-2022 走看看