C#將image中的顯示的圖片轉換成二進制


 1.將Image圖像文件存入到數據庫中

我們知道數據庫里的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();
            }
        }

 

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圖像文件

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輸入流的代碼如下:

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賦值就可以了

 

View Code
           byte[] bb = SetImageToByteArray(textBox1.Text);
            System.Drawing.Image img = ReturnPhoto(bb);
            pictureBox1.Image = img;

 


 


免責聲明!

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



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