[轉]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;

 


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM