2014-09-20 78 views
0

我只是想知道是否可以將圖像保存到數據庫中,而不需要圖像路徑,例如已經分配給圖片框的默認圖像。這是我使用的需要圖像位置的示例代碼。如何在沒有圖像路徑的情況下將圖片箱圖像保存到mysql數據庫中

byte[] imageBt = null; 
FileStream fstream = new FileStream(this.txtImage.Text, FileMode.Open, FileAccess.Read); 
BinaryReader br = new BinaryReader(fstream); 
imageBt = br.ReadBytes((int)fstream.Length); 

conn.Open(); 
MySqlCommand command = new MySqlCommand("insert into images(image)values(@IMG)", conn); 
command.Parameters.Add(new MySqlParameter("@IMG", imageBt)); 

reader = command.ExecuteReader(); 
MessageBox.Show("Saved"); 

while (reader.Read()) 
{ 

} 
+0

不然怎麼想接收圖像作爲?一個圖像或位圖對象?問題中的Mysql列是Blob列嗎? – ChargerIIC 2014-09-20 17:26:28

+0

我想設置一個圖像對象是一個默認圖像設置到圖片框和是的MySQL列設置爲Blob ..謝謝你注意到我的問題.. xD – 2014-09-20 17:29:23

+0

是的,這是可能的。有一個不錯的[youTube視頻示例](https://www.youtube.com/watch?v=szIj1xvNfMU),它使用從PictureBox.Image提供的內存流。但這裏也可能有幾個帖子,告訴你如何,像[這一個](http://stackoverflow.com/questions/20503154/load-an-image-to-c-sharp-and-then-inserting- into-mysql-table)..請看看各種Blob大小! [看這裏](http://www.c-sharpcorner.com/UploadFile/deepak.sharma00/how-to-save-images-in-mysql-database-using-C-Sharp/)! Blob只有255字節,默認情況下 – TaW 2014-09-20 18:02:44

回答

1

您可以使用MemoryStream從PictureBox的圖片保存到字節數組,其他

Image image = pictureBox.Image; 
    MemoryStream memoryStream = new MemoryStream(); 
    image.Save(memoryStream, ImageFormat.Png); 

    byte[] imageBt = memoryStream.ToArray(); 

部分是相同的。

+0

感謝您的回答..我真的很感激它 – 2014-09-20 18:48:02

0

我已經試過這一個...

 MemoryStream ms = new MemoryStream(); 
     pictureBox1.Image.Save(ms, ImageFormat.Png); 
     byte[] pic_arr = new byte[ms.Length]; 
     ms.Position = 0; 
     ms.Read(pic_arr, 0, pic_arr.Length); 

     conn.Open(); 
     MySqlCommand cmd = new MySqlCommand("insert into images(image, name)values(@img,@imgName)", conn); 
     cmd.Parameters.AddWithValue("@imgName", txtName.Text); 
     cmd.Parameters.AddWithValue("@img", pic_arr); 
     int n = cmd.ExecuteNonQuery(); 
     conn.Close(); 
     MessageBox.Show("COmplete");