frmSingleRecord.picImage.Image = DirectCast(sdr("photo_index"), Image)
此代码来自我的MysqlDataReader
,photo_index
来自我的数据库中的Blob
。我从这段代码中得到了错误。
无法将类型为“System.Byte []”的对象强制转换为类型 'System.Drawing.Image对象'。
如果可以DirectCast
Blob
到PictureBox,我怎么能这样做?如果没有任何建议会很棒!
答案 0 :(得分:1)
如上所述,您无法将字节数组转换为PictureBox
这是一个UI控件,但您可以将二进制BLOB转换为Byte()
,以便您可以从中创建图像。假设您确实将Image
Byte()
保存到数据库:
...
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()
,以避免在只有某些行拥有图像数据时可能发生的异常。如果投射有效,则使用Byte()
从MemoryStream
创建图像并将其指定给PictureBox.Image
属性。这可能与您将数据导入数据库的方式相反。
请注意,您已经创建了一个新的Image
,因此您完成后也可以将其丢弃。