【发布时间】:2019-06-08 23:02:42
【问题描述】:
我在访问文件中有一个图像,我想使用用户 ID 检索并在另一个 Windows 窗体窗体中显示它。
保存图片的代码:
Dim img = PictureBox1. Image
Dim ms As New System.IO.MemoryStream
img.Save(ms, img.RawFormat)
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
bytImage = ms.ToArray()
ms.Close()
获取图片的代码:
con.ConnectionString = dbProvider & dbSource
con.Open()
Dim userIdPro = Transfer.userIdPro
Dim query = ("SELECT Image FROM User_info WHERE ID = " & userIdPro & ";")
Dim ds As New DataSet
Dim dr As OleDb.OleDbDataReader
Dim cm = New OleDb.OleDbCommand(query, con)
dr = cm.ExecuteReader
While dr.Read()
Dim MyByte = dr.Item("Value")
Dim fs = New MemoryStream
fs.Write(MyByte, 0, MyByte.Length)
fs.Flush()
Dim MyImg = Image.FromStream(fs, True)
MyImg.Save(dr.Item("ID").ToString & ".JPG", System.Drawing.Imaging.ImageFormat.Jpeg)
PictureBox1.Image = MyImg
fs.Close()
fs = Nothing
End While
con.Close()
End Sub
我无法将二进制数据带入dr;它总是空的。
【问题讨论】:
-
将图像保存在数据库中的代码在哪里?然后,您有
SELECT Image FROM User_info,但您正试图获得Value和ID。也许您想改写SELECT * FROM User_info?存储图像的字段格式和存储方法是相关细节。 -
顺便说一句,
img.Save(ms, img.RawFormat)和img.Save(ms, ImageFormat.Jpeg)不能住在同一个MemoryStream阁楼。 -
@Jimi 我试图根据用户只显示我的表中的图像。我的表还包含根据用户 ID 的其他字段。并且字段图像是数据库中的ole对象格式。
-
将 ms 调暗为新 System.IO.MemoryStream img.Save(ms, img.RawFormat) img. Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg) bytImage = ms.ToArray() ms.Close()
-
插入时图片的类型是byte