2016-09-16 55 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,因此完成后还要处理它。