gpt4 book ai didi

ms-access - Access - 从表单中的图像控件导出图像

转载 作者:行者123 更新时间:2023-12-03 17:08:09 25 4
gpt4 key购买 nike

我一直在寻找一种从 Access 表单中提取图像的方法。在 Google 上搜索几乎总是指向 OLEtoDisk .该软件允许导出存储在 Access 表内的 OLE 字段中的图像。这不是我想要的。

我有一个带有一些 Logo 、标题和背景图像的表单。这些图像使数据库变得越来越大(因为它们嵌入在表单中)。我会提取它们,将它们与后端文件一起放在我们的服务器上,然后将它们添加回我的表单,但这次是作为链接图像而不是嵌入图像。

我希望我说清楚了。欢迎提出任何建议。

编辑:添加了我用来将图像控件的 PictureData 导出为图像文件的代码。此代码无法按预期工作。我发现 PictureData 是一个字节数组,但是在将它复制到文件中后,我每两个字符得到一个 NUL 字符。

Public Function savePict(pImage As Access.Image)
Dim fname As String 'The name of the file to save the picture to
Dim iFileNum As Double

fname = Environ("Temp") + "\temp.png" ' Destination file path
iFileNum = FreeFile 'The next free file from the file system

Open fname For Binary Access Write As iFileNum
Dim tbyte As Variant
Dim i As Double
'Write the byte array to the file
For i = 0 To Len(pImage.PictureData)
Put #iFileNum, , pImage.PictureData(i)
Next i
Close #iFileNum
End Function

最佳答案

图片数据是一个EMF文件,有一个8字节的封装。这是您的例程修改为使用正确的文件扩展名

Public Function savePict(pImage As Access.Image)
Dim fname As String 'The name of the file to save the picture to
Dim iFileNum As Double
Dim bArray() As Byte, cArray() As Byte
Dim lngRet As Long

fname = Environ("Temp") + "\temp.emf" ' Destination file path
iFileNum = FreeFile 'The next free file from the file system

' Resize to hold entire PictureData prop
ReDim bArray(LenB(pImage.PictureData) - 1)
' Resize to hold the EMF wrapped in the PictureData prop
ReDim cArray(LenB(pImage.PictureData) - (1 + 8))
' Copy to our array
bArray = pImage.PictureData
For lngRet = 8 To UBound(cArray)
cArray(lngRet - 8) = bArray(lngRet)
Next

Open fname For Binary Access Write As iFileNum
'Write the byte array to the file
Put #iFileNum, , cArray
Close #iFileNum
End Function

关于ms-access - Access - 从表单中的图像控件导出图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10792426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com