2016-09-16 19 views
0
frmSingleRecord.picImage.Image = DirectCast(sdr("photo_index"), Image) 

此代碼是從我MysqlDataReaderphoto_index是從我數據庫Blob。我從這段代碼中得到錯誤。DirectCast MySQL的BLOB到一個PictureBox

無法投射'System.Byte []'類型的對象來鍵入 'System.Drawing.Image'。

如果它有可能DirectCast a Blob來PictureBox我怎麼能這樣做的權利?如果沒有任何建議會很好!

+0

不,它不是,也不可能用'CType'。 – GSerg

+0

我怎樣才能用'CType'做到這一點? – TKGhoul

+0

[將字節數據加載到圖片框]可能的副本(http://stackoverflow.com/questions/6869777/loading-byte-data-to-a-picture-box) – GSerg

回答

1

如上所述,您不能將字節數組施加到作爲UI控件的PictureBox,但您可以將二進制BLOB轉換爲Byte(),以便您可以從中創建圖像。假設你做了一個ImageByte()保存到數據庫:

... 
If rdr.Read() Then 
    buff = TryCast(rdr.Item(1), Byte()) 
    If buff IsNot Nothing Then 
     Using ms As New MemoryStream(buff) 
      pBox.Image = Image.FromStream(ms) 
     End Using 
    End If 
End If 

首先,TryCast試圖將現場數據轉換爲Byte()避免,如果只有部分行對他們的圖像數據,可能發生異常。如果演員表演,則使用MemoryStreamByte()創建一個圖像,並將其分配給PictureBox.Image屬性。這可能與您如何將數據導入數據庫相反。

請注意,您已經創建了一個新的Image,因此完成後還要處理它。