Nic*_*ick 1 vb.net byte bytearray type-conversion
我正在尝试将 plr.PlayerImage 中的字节转换回图片框的图像。
但是,方法 1 在 plr.PlayerImage 上返回错误“Byte 类型的值无法转换为 Byte 的一维数组”。
方法 2 提供错误消息“从 Byte() 类型转换为 Byte 类型无效”。
方法 1 在我从数据库中检索数据的单独子程序中使用时有效,但不适用于我的新子程序:
Dim pictureData As Byte() = DirectCast(drResult("PlayerImage"), Byte())
Dim picture As Image = Nothing
'Create a stream in memory containing the bytes that comprise the image.
Using stream As New IO.MemoryStream(pictureData)
'Read the stream and create an Image object from the data.'
picture = Image.FromStream(stream)
End Using
UC_Menu_Scout1.PictureBox1.Image = picture
Run Code Online (Sandbox Code Playgroud)
当前代码:
Private Sub fillPlayerInfo()
For Each plr As Player In getAllPlayers()
If lbPlayers.SelectedItem.PlayerID = plr.PlayerID Then
txtFirstName.Text = plr.PlayerFirstName
txtSurname.Text = plr.PlayerLastName
txtPlaceOfBirth.Text = plr.PlaceOfBirth
cmbClub.SelectedValue = plr.ClubID
dtpDOB.Value = plr.DOB
'**********Method 1*********************************************
Dim pictureData As Byte() = DirectCast(plr.PlayerImage, Byte())
Dim picture As Image = Nothing
'Create a stream in memory containing the bytes that comprise the image.
Using stream As New IO.MemoryStream(pictureData)
'Read the stream and create an Image object from the data.
picture = Image.FromStream(stream)
End Using
'**********Method 2*********************************************
Dim ms As New IO.MemoryStream(plr.PlayerImage)
Dim returnImage As Image = Image.FromStream(ms)
pcbEditPlayer.Image = returnImage
End If
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
正如我在上面的评论中所说,您没有在您创建的内存流中投射您的财产。此外,如果plr.PlayerImage未定义为Byte()您将收到异常。
这就是它的样子......
Public Property PlayerImage As Byte()
Run Code Online (Sandbox Code Playgroud)
这是您目前拥有的...
Dim ms As New IO.MemoryStream(plr.PlayerImage) 'This is wrong...
Dim returnImage As Image = Image.FromStream(ms)
pcbEditPlayer.Image = returnImage
Run Code Online (Sandbox Code Playgroud)
它应该像...
Dim ms As New IO.MemoryStream(CType(plr.PlayerImage, Byte())) 'This is correct...
Dim returnImage As Image = Image.FromStream(ms)
pcbEditPlayer.Image = returnImage
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11540 次 |
| 最近记录: |