我正在构建数据库,遇到一个需要解决的问题。客户希望该数据库能够将图片链接到特定记录。我有它,所以图片不是OLE对象,而是链接到将位于其网络驱动器上的图片文件夹...因此,基本上,图片将是指向文件路径的超链接。...
我的问题是没有人知道我可以将数据库自动重新格式化为600 x 800尺寸以节省空间的方式吗?我们都知道,如果我不强迫数据库为他们做的话,那将不会发生,并且有可能吞噬宝贵的空间,因为这个数据库预计会变得很大。因此,我想使图片文件夹尽可能小,以便为数据库留出更多空间。
答案 0 :(得分:1)
您可以使用VBA – Resize Image中所示的WIA库,如下所示:
Function ResizeImageTo600x800(ByVal PathToImage As String, ByVal PathToResizedImage As String) As Boolean
Dim WiaImgFile As Object 'WIA.ImageFile
Set WiaImgFile = CreateObject("WIA.ImageFile")
With CreateObject("WIA.ImageProcess") 'WIA.ImageProcess
.Filters.Add .FilterInfos("Scale").FilterID 'Add Scale Filter to ImageProcess
.Filters(1).Properties("MaximumWidth") = 600 ' Set Width to 600px
.Filters(1).Properties("MaximumHeight") = 800 'Set Height to 800px
'.Filters(1).Properties("PreserveAspectRatio") = False ' uncomment if AspectRatio should not be preseved
WiaImgFile.LoadFile PathToImage ' Load Image
.Apply(WiaImgFile).SaveFile PathToResizedImage ' Apply Filter and save resized Image
ResizeImageTo600x800 = True
Set WiaImgFile = Nothing
End With
End Function
用法:
If ResizeImageTo600x800("\\path\to\image", "\\path\to\resized\image") then
Msgbox "ResizeImageTo600x800 successful!"
End If
或者:
ResizeImageTo600x800 "\\path\to\image", "\\path\to\resized\image"
根据图像类型,还可以增加图像压缩率以节省空间。 WIA也应支持这一点(使用“转换过滤器”及其“质量”属性)。