使用C#向Sql Sever中存取網絡圖片和本地圖片(二進制流的形式)

先是做普通的,存儲我們本地的圖片,將它轉化爲二進制流存儲到數據庫對應的表中。

代碼如下:

 

複製代碼
  string path = "../../A.jpg";
            FileStream fs = new FileStream(path, FileMode.Open);
            int streamLength = (int)fs.Length;  //獲取文件流的長度。  
            byte[] image = new byte[streamLength];    //聲明字節數組,用於保存圖片文件  
            fs.Read(image, 0, streamLength);    //把圖片文件轉換成爲字節數組保存  
            fs.Close();
            var p = new pictureUrl
            {
                pictureUrl1 = image
            };
            db.pictureUrl.InsertOnSubmit(p);//此處使用linq語句實現插入記錄。
            db.SubmitChanges();
複製代碼

 

這種情況使用的比較多,但是也有其他情況,比如我們想要存取網絡上的一張圖片,但是又不想將它下載到本地,覺得很麻煩,只想通過圖片的路徑,將它轉成

二進制流,存到數據庫中。

代碼如下

 

複製代碼
            string path = "https://img3.doubanio.com/mpic/s8896281.jpg";
            Uri url = new Uri(path);
            WebRequest webRequest = WebRequest.Create(url);
            WebResponse webResponse = webRequest.GetResponse();
            Bitmap myImage = new Bitmap(webResponse.GetResponseStream());

            MemoryStream ms = new MemoryStream();
            myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            var p = new pictureUrl
            {
                pictureUrl1 = ms.ToArray()
            };
            db.pictureUrl.InsertOnSubmit(p);
            db.SubmitChanges();
複製代碼

 

讀取圖片的代碼,兩者一樣,都是通過image控件在前臺顯示

  var pictures = from picture in db.pictureUrl select picture;
            pictureUrl myPicture = pictures.First();
            MemoryStream mymemorystream = new MemoryStream(myPicture.pictureUrl1.ToArray());
            pictureBox1.Image = Image.FromStream(mymemorystream);

運行結果:

 

發佈了44 篇原創文章 · 獲贊 14 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章