最近做項目,要將用戶端圖片轉化為二進位,儲存到資料庫中。
將圖片轉化為二進位:
(1)通過圖片路徑進行轉化
private byte[] reDyte(string strPath) { // 以二進位方式讀檔案 FileStream fsMyfile = new FileStream(strPath, FileMode.OpenOrCreate, FileAccess.ReadWrite); // 建立一個位元據流讀入器,和開啟的檔案關聯 BinaryReader brMyfile = new BinaryReader(fsMyfile); // 把檔案指標重新置放到檔案的開始 brMyfile.BaseStream.Seek(0, SeekOrigin.Begin); byte[] bytes = brMyfile.ReadBytes(Convert.ToInt32(fsMyfile.Length.ToString())); // 關閉以上new的各個對象 brMyfile.Close(); return bytes; }
(2)通過圖片對象進行轉化
private static byte[] Getbyte(Image img) { MemoryStream stream = new MemoryStream(); //img.Save(stream,ImageFormat.Jpeg); byte[] mydata = new byte[stream.Length]; mydata = stream.ToArray(); stream.Close(); return mydata; }
(3)將二進位轉化為圖片
private System.Drawing.Image getImage(byte[] fileData) { System.IO.MemoryStream ms = new System.IO.MemoryStream(fileData); System.Drawing.Image img = System.Drawing.Image.FromStream(ms); return img; }
(4)利用image顯示
private void ImgShow(WorkerInfo workerInfo) { string strPicture = ""; System.Drawing.Image imgPictureShow = getImage(workerInfo.Photo); //定義檔案名稱 strPicture = "Picture" + DateTime.Now.ToString("yyMMddhhmmss"); imgPictureShow.Save(Server.MapPath("~/pic/") + strPicture + "jpg", System.Drawing.Imaging.ImageFormat.Jpeg); //顯示檔案 imgPicture.ImageUrl = "pic/" + strPicture + ".jpg";