如何保存和回收PictureBox图像到Sql Server数据库Varbinary(Max)列VB.NET

时间:2013-05-30 17:06:07

标签: sql-server-2008 vb.net-2010

在我的Windows应用程序中,我必须在Windows Form PictureBox中显示图像,该图像将由OpenFile Dialog浏览,然后将PictureBox图像保存到Sql Server 2008 R2 Varbinary(Max)列并显示保存在Sql Server 2008 R2 Varbinary中的图片(使用VB.NET 2010的MaxBox列到PictureBox。

我使用以下代码将Picture从物理驱动器加载到PictureBox

    Private Sub btnPicBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPicBrowse.Click
    With Me.OpenFileDialog1
        .FileName = ""
        .Filter = "Image Files(*.BMP;*.JPG;*.JEPG;*.GIF)|*.BMP;*.JPG;*.JEPG;*.GIF|All files (*.*)|*.*"
        .RestoreDirectory = True
        .ValidateNames = True
        .CheckFileExists = True
        If .ShowDialog = Windows.Forms.DialogResult.OK Then
            Me.PictureBox1.Image.Dispose()
            Me.PictureBox1.Image = System.Drawing.Image.FromFile(.FileName)
            Me.lblPicPath.Text = .FileName
        End If
    End With
End Sub

现在我必须将此映像保存到SQL SERVER 2008数据库VarBinary(MAX)列,然后使用VB.NET 2010将保存在Sql Server 2008 R2 Varbinary(Max)列中的图片保存到PictureBox。

谢谢&此致

JYOTIRMOY

1 个答案:

答案 0 :(得分:3)

在youtube上找到了一些很酷的方法,前面你创建了一个接收图片并将其转换为字节并将其保存到SQLServer DB中的字节的函数,当你检索它时它会显示在图片框上。这是代码实现它并告诉我它是否有效...如果它确实投票给我的答案请:

 Public Function ConvertImage(ByVal myImage As Image) As Byte()

    Dim mstream As New MemoryStream
    myImage.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)

    Dim myBytes(mstream.Length - 1) As Byte
    mstream.Position = 0

    mstream.Read(myBytes, 0, mstream.Length)

    Return myBytes

End Function


因此,如果您使用存储过程进行保存,只需将图片中的图像作为参数传递,例如pictureBoxUser.Image