标题:请问怎样将picturebox中的图片存入数据库字段中?
只看楼主
冰雪清风
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2009-11-9
结帖率:94.12%
已结贴  问题点数:6 回复次数:13 
请问怎样将picturebox中的图片存入数据库字段中?
在数据库的photo字段中有一个大图,现因为要用水晶报表打印照片字段,因此需要一个小图,我打算将它存在sphoto字段中。我现将photo中的大图按比例缩小后放在picturebox中,请问怎样将其存入sphoto中?
搜索更多相关主题的帖子: picturebox 字段 数据库 
2010-01-09 09:45
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
请参看:
[转]VB 图片转换为Byte()和从Byte()中读取图片的捷径https://bbs.bccn.net/thread-248470-1-1.html

授人于鱼,不如授人于渔
早已停用QQ了
2010-01-09 19:28
冰雪清风
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2009-11-9
得分:0 
我照您说的做了,不行啊!sphoto字段仍然显示不出来.
代码如下:
Dim PBag As New PropertyBag
PBag.WriteProperty "Picture", Picture2.Picture
Adodc1.Recordset.Fields("sphoto") = PBag.Contents
Adodc1.Recordset.update
Adodc1.Refresh
另外按您的第二种方法,只能将电脑中有存储路径的文件存到数据库中,而不能将picturebox中的图片存入,好象也不能用.
麻烦问一下,还有别的方法没有?

[ 本帖最后由 冰雪清风 于 2010-1-10 15:23 编辑 ]
2010-01-10 15:11
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
得分:0 
存图片的字段类型是什么?
2010-01-10 18:04
冰雪清风
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2009-11-9
得分:0 
存图片的字段类型是image
2010-01-11 09:07
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
而不能将picturebox中的图片存入,好象也不能用.

picturebox 载入的图像使用 它的 picture 属性取得图像
绘制,复制的图像,使用 它的 image 属性取得图像。



授人于鱼,不如授人于渔
早已停用QQ了
2010-01-11 19:38
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
得分:0 
Example068-使用Stream读写存储的图像.zip (14.13 KB)

这个是把文件数据储存到数据库里。
数据库里存储图片的字段类型是OLE,但是,我怎么找都找不到例子。
呃!是找到了,但那是NET框架的。
那就只好用流了。

这个image是什么类型?
ms access 里没有这个数据类型吧。
比如ole、long byte之类的。

[ 本帖最后由 bczgvip 于 2010-1-11 23:50 编辑 ]
2010-01-11 23:48
冰雪清风
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2009-11-9
得分:0 
我把代码改为:
   PBag.WriteProperty "image", Picture2.Image
可是还是无法显示.怎么回事?
另,我的数据库是SQL.
7楼您的方法我看了一下,好象是从本机路径上取得图像,再存入数据库中,而我需要从VB的picturebox中取得图像.不知用流的方法能解决吗?

[ 本帖最后由 冰雪清风 于 2010-1-12 11:28 编辑 ]
2010-01-12 11:23
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
得分:0 
看起来,楼主是想要将编辑过的图片存入数据库。这时候图片不是从文件路径中加载的了,对吧?

我给你写了一个例子。你参考一下:(代码在下一楼)

一)建一个测试的表:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TmpPic]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[TmpPic]
GO

CREATE TABLE [dbo].[TmpPic] (
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [width] [numeric](18, 0) NULL ,
    [height] [numeric](18, 0) NULL ,
    [photo] [image] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

二)VB6中,新建一个工程,在Form1上画 二个按钮控件,二个Picturebox控件,一个CommonDialog控件,所有属性均采用默认值

三)将下一楼的代码复制到窗体Form1的窗体代码中

四)按下F5键运行。


===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2010-01-12 13:41
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
得分:3 
本测试程序时注意事项在楼上



程序代码:

Dim bit1() As Byte
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Private Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Private Type BITMAP
  bmType As Long
  bmWidth As Long
  bmHeight As Long
  bmWidthBytes As Long
  bmPlanes As Integer
  bmBitsPixel As Integer
  bmBits As Long
End Type

Function getbit(ByVal hbmp As Long, ByRef bit() As Byte)
Dim picinfo As BITMAP
GetObject hbmp, Len(picinfo), picinfo
ReDim bit(1 To picinfo.bmHeight * picinfo.bmWidth * 4)
GetBitmapBits hbmp, UBound(bit), bit(1)
End Function

Private Sub Command1_Click() '保存图片
Dim Conn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Conn.ConnectionString = "这里写上连接你的SQLSERVER数据库的代码"
Conn.Open
Rs.Open "select * from [TmpPic]", Conn, 1, 3
Rs.AddNew
   getbit Picture1.Image, bit1()
   Rs("width") = Picture1.Width'记录下图片的宽度
   Rs("height") = Picture1.Height'记录下图片的高度
   Rs("photo").AppendChunk bit1()
Rs.Update

Rs.Close
Conn.Close
Set Rs = Nothing
Set Conn = Nothing
End Sub

Private Sub Command2_Click() '显示图片
Dim Conn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Conn.ConnectionString = "这里写上连接你的SQLSERVER数据库的代码"
Conn.Open
Rs.Open "select * from [TmpPic]", Conn, 1, 1
  ReDim bit1(1)
  Picture2.Width = Rs("width")
  Picture2.Height = Rs("height")
  bit1 = Rs("photo").GetChunk(Rs("photo").ActualSize)
  SetBitmapBits Picture2.Image, UBound(bit1), bit1(0)
  Picture2.Refresh
Rs.Close
Conn.Close
Set Rs = Nothing
Set Conn = Nothing

End Sub

Private Sub Form_Load()
Command1.Caption = "保存图片"
Command2.Caption = "读取图片"
End Sub

Private Sub Picture1_Click() '给Pictrue1加载一幅图片
CommonDialog1.ShowOpen
Picture1.Picture = LoadPicture(CommonDialog1.FileName)
End Sub







===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2010-01-12 13:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-295330-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.191320 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved