2010-08-09 55 views
7

我有一個PictureBox控件我想在其中顯示圖像。我將這些數據保存在MS Access數據庫中:OLE Object。 我發現很難再次顯示它。請看看我的代碼,可以爲你們設計一個解決方案。我得到這個Exception如何將System.Byte []轉換爲圖像? (C#窗體)

Unable to cast object of type 'System.Byte[]' to type 'System.Drawing.Image'. 

這裏是我的代碼:

OleDbCommand cmd = new OleDbCommand("SELECT IMAGE FROM IMAGES WHERE ID = 1", myConn)); 
      cmd.CommandType = CommandType.Text; 
      OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
      DataTable dt = new DataTable("dt"); 
      da.Fill(dt); 

      if (dt != null) 
      {    
       pictureBox1.Image = (Image)dt.Rows[0]["IMAGE"]; 
      } 

回答

28

最簡單的方法是使用一個MemoryStream並調用Image.FromStream

byte[] data = (byte[]) dt.Rows[0]["IMAGE"]; 
MemoryStream ms = new MemoryStream(data); 
pictureBox1.Image = Image.FromStream(ms); 

編輯:如果你跑起來反對漢斯描述的問題,你基本上需要去掉那個標題。一旦你得到一個只有圖像數據的字節數組,使用上面的代碼。

+0

非常感謝......) – yonan2236 2010-08-09 13:21:35

+1

無法正常工作,Access爲圖像數據添加標題。 – 2010-08-09 14:31:57

+0

但我不好的PictureBox選項?請幫忙 – SanamShaikh 2015-06-12 19:12:08