gpt4 book ai didi

mysql - 使用函数显示图像

转载 作者:行者123 更新时间:2023-11-29 22:25:45 30 4
gpt4 key购买 nike

我是VB新手。 NET,所以请耐心等待。在下面的代码中,我的主窗体中有一个图片框,我希望所选查询 profile_picture 显示在图片框中,但我不知道该函数应返回什么

Public Sub ShowPicture(ByVal username As String)
user = username
Dim dsSearch As DataSet
ModuleQuery.Showpic(username)

Dim dSearch As Byte() = DirectCast(dr("Photo"), Byte())
Dim ms As New MemoryStream(dsSearch)
prof_pic.Image = Image.FromStream(ms)

End Sub

这是一个包含所有 SELECT 查询的模块,因此不会困惑。我想调用一个函数,但我不知道要返回什么以便我可以显示图像

Public Function Showpic(ByVal user As String)
Dim FunctionErrorState As Boolean = False
Dim InsertError As Boolean = False
Dim CloseError As Boolean = False

Dim dsData As New DataSet
Dim bite As Byte()
Try
openDB()
'MyADOConnection.Open()


Dim myQuery As String = "SELECT profile_picture FROM coa.register WHERE username = '" & user & "'"

Dim myCommand As New MySql.Data.MySqlClient.MySqlCommand(myQuery)

dr = myCommand.ExecuteReader

bite = DirectCast(dr("Photo"), Byte())


Catch ex As MySql.Data.MySqlClient.MySqlException
InsertError = True


End Try
Try
MyADOConnection.Close()
Catch exclose As MySql.Data.MySqlClient.MySqlException
CloseError = True

End Try
If InsertError Then
FunctionErrorState = True
End If

Return bite 'I just put something random here since I don't know what to retun
End Function

最佳答案

在我看来,图像是以字节数组的形式存储在数据库中的。您(我猜对了)使用 ShowPic 函数中的命令 bite = DirectCast(dr("Photo"), Byte()) 从数据库读取此数组。字节数组只是内存中的一大块数据,您稍后可以使用 MemoryStream 进行查询。

因此,您的 ShowPic 函数(更像是 GetPic 函数;-)应该返回 Byte()

Public Function Showpic(ByVal user As String) As Byte()

您应该用 Nothing 初始化 bite

Dim bite As Byte() = Nothing

这样,如果发生错误,数组将什么都没有,您可以检查一下。

为了将包含原始图像数据的字节数组转换为图像,您可以正确使用 MemoryStreamImage.FromStream 方法。 .NET 中的 I/O 大部分与流一起工作。它们只是从某些来源持续提供数据的一种方式。在这种情况下,源只是内存,特别是从数据库获取的字节数组。

但是,您永远不会使用该字节数组。将 ShowPic 函数的结果分配给一个变量,以便使用它:

Public Sub ShowPicture(ByVal username As String)
user = username
Dim ImageData As Byte() = ModuleQuery.Showpic(username)
If ImageData IsNot Nothing Then
Using ms As New MemoryStream(ImageData)
prof_pic.Image = Image.FromStream(ms)
End Using
Else
'Your function returned nothing, so an error occured.
'This is a very crude way of error handling, since you never
'see the error in the first place, which makes debugging a
'nightmare. There are better ways, out of scope of this answer.

MessageBox.Show("No image retrieved due to an error :(")
End If
End Sub

这样,您就可以在 ShowPic 中从数据库中检索图像数据(再次将其重命名为 GetPicGetImageData 或其他名称)并返回将其原始数据发送到 ShowPicture 方法,您可以在其中解码并显示它。

关于mysql - 使用函数显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30283820/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com