2012-08-26 36 views
0

存儲在MySQL DATABSE在BLOB格式我在DB顯示使用C#

void SaveImage(byte[] image) 
     { 
      MySqlConnection con = new MySqlConnection(db);//new connection is made 
      con.Open(); 

       string cmdText = "INSERT INTO Picture(RoomNo ,pic)VALUES ('" + RoomNo.Text + "',?Image)"; 
       MySqlCommand cmd = new MySqlCommand(cmdText, con); 
       cmd.Parameters.Add("?Image", image); 
       cmd.ExecuteNonQuery(); 

     } 

使用下面的函數來存儲圖像在主正在呼叫的功能這樣

using (var ms = new MemoryStream()) 
      { 
       picbox.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 
       SaveImage(ms.ToArray()); 
      } 

的圖像,我不知道該怎麼顯示它在一個圖片框..任何一個可以幫助我?

回答

3

您使用的Windows窗體圖像法(FromStream)?並且您必須將字節數組轉換爲圖像才能在圖片框中顯示它。

public Image byteArrayToImage(byte[] byteArrayIn) 
{ 
    MemoryStream ms = new MemoryStream(byteArrayIn); 
    Image returnImage = Image.FromStream(ms); 
    return returnImage; 
} 

而你是如何將圖像轉換爲字節數組的。我希望那個問題不存在。您可以使用:

private byte[] ImageToByteArray(string ImageFile) 
    { 
     FileStream stream = new FileStream(
       ImageFile, FileMode.Open, FileAccess.Read); 
     BinaryReader reader = new BinaryReader(stream); 

     // Convert image to byte array. 
     byte[] photo = reader.ReadBytes((int)stream.Length); 

     return photo; 
    } 
+0

嗨,感謝您的答覆,但我有一些疑問,我在數據庫存儲PIC爲BLOB格式,我怎麼把這個值到我的形式,我如何調用該函數時,我點擊一個按鈕? – SeD

+0

首先,您必須將blob數據轉換爲字節數組。然後你會調用方法byteArrayToImage。像這樣: picbox.Image = byteArrayToImage(blobData.ToByteArray)。 如果它幫助+1我的答案。謝謝。 –

+0

回想像這樣的blob數據.... pic = dr [「Pic」]。ToString();並調用byte [] array = new byte [150]; array = ImageToByteArray(pic); picturebox.Image = byteArrayToImage(array); ...它不工作..你可以幫我.. – SeD

0

設置你的形象圖片框使用

yourPictureBox.Image = Image.FromStream(ms);