Office中国论坛/Access中国论坛

标题: 二进制保存图片 [打印本页]

作者: 13912668356    时间: 2007-12-1 09:17
标题: 二进制保存图片

作者: tmtony    时间: 2007-12-1 10:38
不错,这种方法很好.
我以前使用另一种方法


'保存文件到字段:
'tmtony
Public Function SaveFileToField(ByRef fld As ADODB.Field, DiskFile As String) As Boolean

On Error GoTo ErrorHandle

    Const BLOCKSIZE = 4096
    Dim byteData() As Byte '定义数据块数组
    Dim NumBlocks As Long '定义数据块个数
    Dim FileLength As Long '标识文件长度
    Dim LeftOver As Long '定义剩余字节长度
    Dim SourceFile As Long '定义自由文件号
    Dim I As Long '定义循环变量
    SourceFile = FreeFile '提供一个尚未使用的文件号
    Open DiskFile For Binary Access Read As SourceFile '打开文件
    FileLength = LOF(SourceFile) '得到文件长度
    If FileLength = 0 Then '判断文件是否存在
    Close SourceFile
    MsgBox DiskFile & "无 内 容 或 不 存 在 !"
    Else
    NumBlocks = FileLength \ BLOCKSIZE '得到数据块的个数
    LeftOver = FileLength Mod BLOCKSIZE '得到剩余字节数
    fld.Value = Null
    ReDim byteData(BLOCKSIZE) '重新定义数据块的大小
    For I = 1 To NumBlocks
    Get SourceFile, , byteData() ' 读到内存块中
    fld.AppendChunk byteData() '写入FLD
    Next I
    ReDim byteData(LeftOver) '重新定义数据块的大小
    Get SourceFile, , byteData() '读到内存块中
    fld.AppendChunk byteData() '写入FLD
   
    Close SourceFile '关闭源文件
    End If
        SaveFileToField = True
        Exit Function
   
ErrorHandle:
        SaveFileToField = False
        MsgBox Err.Description, vbCritical, "写入数据出错!"
   
End Function

'保存字段内容到文件:

Public Function GetFileFromField(blobColumn As ADODB.Field, ByVal FILENAME) As Boolean
Dim FileNumber      As Integer      '文件号
Dim DataLen             As Long         '文件长度
Dim Chunks              As Long         '数据块数
Dim ChunkAry()      As Byte         '数据块数组
Dim ChunkSize       As Long         '数据块大小
Dim Fragment        As Long         '零碎数据大小
Dim lngI                As Long '计数器
   
        On Error GoTo ErrorHandle
        GetFileFromField = False
        ChunkSize = 2048                    '定义块大小为 2K
        If IsNull(blobColumn) Then Exit Function
   
        DataLen = blobColumn.ActualSize         '获得图像大小
        If DataLen < 8 Then Exit Function   '图像大小小于8字节时认为不是图像信息
            FileNumber = FreeFile               '产生随机的文件号
        Open FILENAME For Binary Access Write As FileNumber     '打开存放图像数据文件
        Chunks = DataLen \ ChunkSize        '数据块数
        Fragment = DataLen Mod ChunkSize    '零碎数据
        If Fragment > 0 Then            '有零碎数据,则先读该数据
                ReDim ChunkAry(Fragment - 1)
                ChunkAry = blobColumn.GetChunk(Fragment)
                Put FileNumber, , ChunkAry      '写入文件
        End If
   
        ReDim ChunkAry(ChunkSize - 1)             '为数据块重新开辟空间
        For lngI = 1 To Chunks                              '循环读出所有块
                ChunkAry = blobColumn.GetChunk(ChunkSize)   '在数据库中连续读数据块
                Put FileNumber, , ChunkAry()    '将数据块写入文件中
        Next lngI
        Close FileNumber            '关闭文件
        GetFileFromField = True
        Exit Function
ErrorHandle:
        GetFileFromField = False
        MsgBox Err.Description, vbCritical, "读取数据出错!"
End Function
作者: sgrshh29    时间: 2007-12-1 11:25
保存的方法不错,实际上不仅是jpeg图片,其它格式的图片和其它格式的文件都可以这样保存。所以有个问题在里面,就是你以后如何把它读出来。特别是如果是图片,读出时如何不要另存为临时文件,而是直接在图片控件上显示出来。
作者: lisj    时间: 2007-12-1 15:15
感谢
作者: goto2008    时间: 2007-12-1 17:00
这个例子。。。网上有出现过哦。。。。情比金坚
作者: jynj    时间: 2008-3-3 10:42
请问tmtony管理员,你这段程序如何调用?
作者: tanhong    时间: 2008-9-16 16:12
上述方法多收下了.顶一个,以便大家分享.
作者: fan0217    时间: 2008-9-16 17:16
我先前也发布了一篇文章,是将文件保存在xml文件中,因为xml文件内容是纯文本,所以我们可以用备注字段来保存。

参考地址:http://www.office-cn.net/vvb/thread-63960-1-1.html
作者: fan0217    时间: 2008-9-22 07:09
做了个实例,xml不错文件。并保存在数据库中。
作者: 086-china    时间: 2008-9-22 11:59
学习了
作者: zzcjp    时间: 2008-9-27 15:57
收集下来,慢慢研究
作者: freeoffice    时间: 2008-10-15 20:01
sdfsf
作者: 7777777    时间: 2008-11-22 17:42
学习了
作者: 13555609005    时间: 2008-12-27 10:12
DGSFDGFSDG
作者: XWQ2000    时间: 2008-12-27 23:36
[:50] [:50]
作者: 7777777    时间: 2009-1-6 11:23
dddddddd
作者: tdhgj    时间: 2009-2-23 19:26
good
作者: mickey831    时间: 2009-2-26 10:13
谢谢~学习了!
作者: twins    时间: 2009-3-14 16:10
谢谢楼主分享
作者: kn1394    时间: 2009-3-21 05:58
try
作者: luhao    时间: 2009-3-22 00:04
学习
作者: 最怕冷    时间: 2009-4-20 22:27
学习一下
作者: wuyu1623    时间: 2009-5-23 21:04
不错,这种方法很好.
作者: ximan    时间: 2009-5-31 13:22
学习
作者: leoyan76    时间: 2009-6-11 11:20
seeeeeeeeeeee
作者: DSYOU    时间: 2009-7-8 09:23
xue xi le ....
作者: wmok    时间: 2009-7-12 10:21
好东西,看看!
作者: yujingchun    时间: 2009-8-22 10:41
谢谢楼主分享,实用
作者: yujingchun    时间: 2009-8-22 10:43
慢慢研究
作者: 老眼夹    时间: 2009-10-12 09:49
看看
作者: chaojianan    时间: 2009-10-14 21:36
谢谢分享。
作者: leijiqiang    时间: 2009-10-24 14:51
看看
作者: wangjeffson    时间: 2009-12-2 11:17
学习下,谢谢
作者: secowu    时间: 2009-12-8 16:37
有没有读出图片的??
作者: lp2lp2    时间: 2010-1-15 23:20
kankan
作者: lp2lp2    时间: 2010-1-15 23:22
kankan
作者: c101    时间: 2010-1-15 23:45
谢谢分享
作者: li08hua    时间: 2010-1-29 22:57
正在学习中1
作者: cjls2000    时间: 2010-3-26 12:57
好东西 支持一下:)
作者: gaoyh2008    时间: 2010-3-26 17:34
see  see  see
作者: liushichao3687    时间: 2010-4-6 11:33
想学习!
作者: yanwei82123300    时间: 2010-4-6 15:01
学习了
作者: zhao__feng    时间: 2010-4-14 22:19
学习了
作者: fxtest    时间: 2010-5-6 19:16
谢谢分享
作者: lmgiant    时间: 2010-5-11 17:32
学习了
作者: sxb2007    时间: 2010-5-18 08:48
学习了
作者: jsan999    时间: 2010-7-28 16:15
okkkkkkkkkkkk
作者: lzx-shmily    时间: 2010-7-29 18:46
看看

作者: ZHENGLIAN    时间: 2010-8-18 14:41
不错,这种方法很好.

作者: 真主    时间: 2010-9-15 13:56
这个我学习学习
作者: t小宝    时间: 2011-1-8 12:57
看看
作者: weny87    时间: 2011-3-30 22:40
好,我学了,明天去试试效果
作者: js7756    时间: 2011-5-1 23:41
.顶一个,以便大家分享.
作者: zhaozhuonayes    时间: 2011-6-4 11:53
学习
作者: hgxly    时间: 2011-6-4 12:30
学习
作者: caoguangyao    时间: 2011-6-4 12:30
抄下学习
作者: khmkhm    时间: 2011-6-11 16:03
学习

作者: shenlan    时间: 2011-8-3 23:22
谢谢分享,收藏了
作者: wuheng    时间: 2011-8-17 10:19
学习~~~~````
作者: appleking    时间: 2011-10-10 12:56
!!!!!!!!!!!
作者: sxy6809    时间: 2011-12-6 10:17
学习。
作者: efcndi    时间: 2011-12-8 14:40
看看
作者: penke    时间: 2011-12-20 00:44
kankan
作者: l_q101    时间: 2012-1-2 21:38
www.office-cn.net
作者: xxiaoxin321    时间: 2012-1-16 14:59
xuexi !~~~~~
作者: wangyi317633    时间: 2012-3-29 20:40
look
作者: playonthesun    时间: 2012-3-30 22:43
QIU
作者: jingan    时间: 2012-4-20 21:24
顶一下....关注一下...

作者: jingan    时间: 2012-4-20 21:27
打开要密码?
请问密码?
作者: boyandmerry    时间: 2012-4-24 23:25
kankan
作者: boyandmerry    时间: 2012-4-25 09:02
这个例子不错
作者: accesswj    时间: 2012-4-30 15:32
kookoookokko
作者: 小何    时间: 2012-4-30 20:08
不知道会不会增加系统
作者: hazz    时间: 2012-8-29 14:04
学习了
作者: hazz0921    时间: 2012-10-16 13:05
学习了
作者: yanghua1900363    时间: 2012-10-16 16:50
谢谢分享!学习了
作者: 飞不动的鹰    时间: 2013-4-4 02:26
谢谢分享
作者: 李力军2    时间: 2013-9-2 21:27
网上有很多这样的例子
作者: zxclen    时间: 2014-4-7 11:19
SEEEEEEEEEEEEEEEEEEEEEE
作者: tzc1991    时间: 2014-5-30 12:33
学习来的
作者: tzc1991    时间: 2014-5-30 12:35
问下   这个还需要解压密码,是什么啊?
作者: a411709733    时间: 2014-5-30 21:11
好东西 看看
作者: hunrybecky    时间: 2015-11-19 15:52
正需要。。。。。。
作者: baidu321    时间: 2016-3-23 18:03
能节约多少空间
作者: cityguy    时间: 2016-4-25 15:35
谢谢!学习!
作者: CHX    时间: 2016-6-22 21:43

作者: 飘过    时间: 2016-7-31 18:33
谢谢
作者: alphalau81    时间: 2016-8-5 10:51
看看

作者: 李力军2    时间: 2016-8-15 14:39
学习了
作者: jujuwa73    时间: 2017-12-21 20:52
一个保存图片在数据库里的例了,供大家参考 [修改]
作者: sakyachen    时间: 2017-12-29 18:24
I just want to browse for a while
作者: 小福    时间: 2019-5-26 14:46
度化11111111111
作者: ahdyxlc    时间: 2019-6-18 17:03
谢谢分享,学习一下
作者: wuwu200222    时间: 2020-11-24 09:40
学习
作者: snryga    时间: 2021-6-7 18:46
学习
作者: gdjdyyj    时间: 2021-6-20 08:54
学习!!!!
作者: 灰太郎    时间: 2022-3-30 17:00
12356




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3