DirectCast MySQL BLOB到PictureBox

时间:2016-09-16 07:07:00

标签: mysql .net vb.net

frmSingleRecord.picImage.Image = DirectCast(sdr("photo_index"), Image)

此代码来自我的MysqlDataReaderphoto_index来自我的数据库中的Blob。我从这段代码中得到了错误。

  

无法将类型为“System.Byte []”的对象强制转换为类型   'System.Drawing.Image对象'。

如果可以DirectCast Blob到PictureBox,我怎么能这样做?如果没有任何建议会很棒!

1 个答案:

答案 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,因此您完成后也可以将其丢弃。