在VB编程中如何插入图片?

在VB编程中如何插入图片?,第1张

有三种方法:

1、添加一个picturebox或imagebox,在属性窗口中选择picture属性,然后就可以添加图片了,这是最简单的一种;

2、第二种是代码加入:

Option Explicit

Private Sub Form_Load()

Me.Picture = LoadPicture("c:\text.bmp") 'c:\text.bmp为图片路径

End Sub

3、第三种是通过剪贴板加入,这种比较复杂,如:

Option Explicit

Private Sub Form_Load()

Clipboard.SetData Picture1.Image

End Sub

图片是可以存储到数据库中的,只是把它转化成二进制数据保存进去。但是这样的方式,将会使得数据库异常庞大。占用数据库资源。所以并不是主流的存储方式。

通常我们存储图片进入数据库的做法是,保存一个地址给数据库,而图片是采用别的方法存储到服务器磁盘中的。

比如,使用FTP方式将图片保存到服务器D:\PIC文件夹。在服务器数据库中只要记录D:\PIC\1.JPG。那么读取图片的时候数据库中读取图片文件名或地址,那么就可以在FTP中取得。

1.使用存取文件路径的方法存取图片

保存文件名与保存其他字符型数据的方法相同,其代码如下:

Dim photoFilename as String

photoFilename = CommonDialog1.FileName

rs1.AddNew

rs1.Fields("photo")= photoFilename

rs1.Update

2.使用AppendChunk方法将二进制文件存入数据库中

下面使用AppendChunk方法将不同类型的文件存入到数据库中,程序主要代码如下:

Const BLOCKSIZE = 4096

Dim cn As New ADODB.Connection

Dim rs As New ADODB.Recordset

Private Sub SaveToDB(ByRef Fld As ADODB.Field, DiskFile As String)

'定义数据块数组

Dim byteData() As Byte

'定义数据块个数

Dim NumBlocks As Long

Dim FileLength As Long

'定义剩余字节长度

Dim LeftOver As Long

Dim SourceFile As Long

Dim i As Long

'判断文件是否存在

If Dir(DiskFile) <>"" Then

SourceFile = FreeFile

'打开二进制文件

Open DiskFile For Binary Access Read As SourceFile

FileLength = LOF(SourceFile)

'判断文件是否空

If FileLength = 0 Then

Close SourceFile

MsgBox DiskFile &"文件无内容,请重新指定文件!", vbExclamation, "注意"

Else

'得到数据块的个数

NumBlocks = FileLength \ BLOCKSIZE

'得到剩余字节数

LeftOver = FileLength Mod BLOCKSIZE

Fld.Value = Null

ReDim byteData(BLOCKSIZE)

For i = 1 To NumBlocks

Get SourceFile, , byteData()

'用Appendchunk方法将byteData()数据写入FLD

Fld.AppendChunk byteData()

DoEvents

Next i

'将剩余数据写入FLD

ReDim byteData(LeftOver)

Get SourceFile, , byteData()

Fld.AppendChunk byteData()

Close SourceFile

End If

Else

MsgBox "文件不存在,请重新指定文件!", vbExclamation, "注意"

End If

End Sub

3.使用Stream对象将二进制文件存入数据库

在ADO2.5以上版本中提供了一个Stream对象,该对象的引入大大简化了二进制字段的存取 *** 作,但使用前需要引用ADO 2.5Library以上的版本

下面使用Stream对象将各种类型的文件存入到数据库中,程序代码如下:

Dim cn As New ADODB.Connection

Dim rs As New ADODB.Recordset

Dim mst As New ADODB.Stream

Private Sub cmdSave_Click()

rs.Open "select * from 文件表", cn, adOpenDynamic, adLockOptimistic

rs.AddNew

rs.Fields("名称") = Text1.Text

mst.Type = adTypeBinary

mst.Open

If Text2.Text <>"" Then mst.LoadFromFile Text2.Text

rs.Fields("文件") = mst.Read

rs.Update

mst.Close

rs.Close

End Sub

Private Sub Command1_Click()

On Error GoTo Err

CommonDialog1.Filter = "所有文件(*.*)|*.*"

CommonDialog1.ShowOpen

Text2.Text = CommonDialog1.FileName

Exit Sub

Err:

MsgBox Err.Description

End Sub

Private Sub Form_Load()

Dim cnnstr As String

cnnstr = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=" &App.Path &"\db_wjgl.mdbPersist Security Info=False"

cn.Open cnnstr

Adodc1.ConnectionString = cnnstr

Set Picture1.DataSource = Adodc1

Picture1.DataField = "文件"

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6894282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-29
下一篇 2023-03-29

发表评论

登录后才能评论

评论列表(0条)

保存