将图像从PictureBox保存到数据库
问题描述:
我想知道如何在Visual Basic中使用浏览文件对话框将数据保存到我的电脑中。将图像从PictureBox保存到数据库
我使用下面的代码来选择图像形成我的电脑:
Private Sub btnBuscar_Click(sender As Object, e As EventArgs) Handles btnBuscar.Click
With OpenFileDialog1
.CheckFileExists = True
.ShowReadOnly = False
.Filter = "All Files |*.*| Bitmap Files (*)|*.bmp;*.gif;*.jpg"
.FilterIndex = 2
If .ShowDialog = DialogResult.OK Then
PictureBox1.Image = Image.FromFile(.FileName)
End If
End With
End Sub
从我的形式,我调用另一个类来创建对象:
gestor.agregarMission(txtNombre.Text, txtTrip.Text, dtInicio.Value, numDuracionDia.Text, programa, txtDatos.Text, txtResul.Text, picture, txtNave.Text, cuerpo)
我需要构建一个一些参数,包括一个Image对象的使命,这是构造函数:
Public Sub agregarMission(pnombre As String, ptripulantes As String, pfechaLanz As Date, pduracion As Double, pprograma As String, pdescripcion As String, presultado As String, **pinsignia As Image**, pnave As String, pcuerpo As String)
Dim objMision As New Mision(pnombre, ptripulantes, pfechaLanz, pduracion, pprograma, pdescripcion, presultado, pinsignia, pnave, pcuerpo)
multiMision.registrarMission(objMision)
End Sub
我不能看到发现是相当于pictureBox.Image或wahetever,所以我可以将它发送给构造函数。
在我的SQL表中,字段类型是Image,我被告知Image类型实际上是一个数组,所以我不知道是否可以稍后将它转换为String并稍后将其作为原始类型恢复。
如果有人能给我一个提示,我将非常感激!
答
如果您将图像文件名作为字符串传递到您的agregarMission
,您可以使用它读取图像,将其转换为字节并插入它。除非您将它用于别的东西,否则不需要PictureBox。
Dim fiImage As FileInfo = New FileInfo(imageFilename)
Dim fs As FileStream = New FileStream(imageFilename, FileMode.Open, FileAccess.Read, FileShare.Read)
Dim imgByteArray = New Byte((Convert.ToInt32(fiImage.Length)) - 1) {}
fs.Read(imgByteArray, 0, Convert.ToInt32(fiImage.Length))
fs.Close
插入imgByteArray
到表中字段
什么是错的'pinsignia作为Image'? 'Image'是一个实际的.NET类型,所以如果你有一个属性,如'Insignia As Image',你应该没问题。至于DB,存储一个字节数组,列类型取决于DB。 – Plutonix 2014-10-09 13:00:48