“System.Drawing.Image”无法转换为“1维数组”

时间:2013-08-25 10:54:06

标签: vb.net

我正在使用Access数据库在VB.Net中创建一张带有图片的注册表单。利用以下代码,我收到错误。

Me.Student_instructorTableAdapter.Insert(txtname,txtpass, ***PictureBox1.Image***)
Me.Student_instructorTableAdapter.Fill(Me.DatabaseDataSet4.student_instructor)

MsgBox("Successfully added", MsgBoxStyle.Information)

PictureBox1.Image正在保存到一个引发错误的Access数据库(“图片”)中:

  

“System.Drawing.Image”无法转换为“1维数组”

当我致电PictureBox1.Image以避免异常时,我应该使用什么代替Insert

1 个答案:

答案 0 :(得分:2)

(应该是评论,但我需要发布代码)

我们需要完整的异常消息来确切地知道它的期望(是什么的一维数组?)很可能它是一个字节数组。

如果是这样,您可以将图像转换为像这样的字节数组...

Public Function ImageToByteArray(imageIn As System.Drawing.Image) As Byte()
    Dim ms As New MemoryStream()
    imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
    Return ms.ToArray()
End Function

您可以将字节数组转换回这样的图像......

Public Function byteArrayToImage(byteArrayIn As Byte()) As Image
    Dim ms As New MemoryStream(byteArrayIn)
    Dim returnImage As Image = Image.FromStream(ms)
    Return returnImage
End Function

See here了解更多信息

我不熟悉访问数据类型,因此它可以直接支持图像。如果是这样,您需要确保为该列/字段选择了正确的数据类型。

顺便提一下,如果您不必这样做,请不要对新项目使用Access(或至少使用存储引擎/ JET) - 它速度慢,不可靠,超过10个用户,并且存在严重的安全问题。如果您不需要完整的SQL Server数据库,请考虑SQL Compact Edition(CE)或SQL Express。