none
从内存中读取图片,不能显示的问题? RRS feed

  • 问题

  • 使用NORTHWND实例数据库,显示其中的雇员照片。

    连接打开看数据集已经填充,DataGridView已经正常显示雇员表格。

    然后开始使用PictureBox1来显示其中的照片,就出了问题:参数不正确。

    代码如下:

    Try
    Me.PictureBox1.SizeMode = PictureBoxSizeMode.Zoom
    Dim xyxy() As Byte
    xyxy = mm.dataset1.Tables.Item(mm.dataset1.Tables.IndexOf("Employees")).Rows(3).Item(14)
    Dim w As System.IO.MemoryStream = New System.IO.MemoryStream(xyxy)
    Me.PictureBox1.Image = System.Drawing.Image.FromStream(w)

    Catch ex As Exception
    MsgBox(ex.ToString)
    End Try

    不知道怎么回事?

    2012年7月11日 0:22

答案

  • 是的,那是因为Northwind数据库中的图片貌似编码不太一样。我建议您尝试重新对Byte进行编码然后读取绑定。

    参考:

     Using ms As New MemoryStream(New Byte())
                '声明一个Bitmap类
                Dim bm As New Bitmap(ms)
                '重新声明一个新的MemoryStream
                Dim ms2 As New MemoryStream
                bm.Save(ms2, System.Drawing.Imaging.ImageFormat.Jpeg)
                '然后使用ms2
            End Using

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    发现是其他的原因,重新存储了一张照片进去覆盖其中的一条记录,结果就正常了,看来很可能原来数据库中的数据有问题,而不是其他。
    2012年7月11日 7:48

全部回复

  • 是的,那是因为Northwind数据库中的图片貌似编码不太一样。我建议您尝试重新对Byte进行编码然后读取绑定。

    参考:

     Using ms As New MemoryStream(New Byte())
                '声明一个Bitmap类
                Dim bm As New Bitmap(ms)
                '重新声明一个新的MemoryStream
                Dim ms2 As New MemoryStream
                bm.Save(ms2, System.Drawing.Imaging.ImageFormat.Jpeg)
                '然后使用ms2
            End Using

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年7月11日 2:26
    版主
  • 是的,那是因为Northwind数据库中的图片貌似编码不太一样。我建议您尝试重新对Byte进行编码然后读取绑定。

    参考:

     Using ms As New MemoryStream(New Byte())
                '声明一个Bitmap类
                Dim bm As New Bitmap(ms)
                '重新声明一个新的MemoryStream
                Dim ms2 As New MemoryStream
                bm.Save(ms2, System.Drawing.Imaging.ImageFormat.Jpeg)
                '然后使用ms2
            End Using

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    发现是其他的原因,重新存储了一张照片进去覆盖其中的一条记录,结果就正常了,看来很可能原来数据库中的数据有问题,而不是其他。
    2012年7月11日 7:48