Access 2016将图片大小限制为600x800

时间:2018-11-08 19:56:26

标签: image ms-access resize

我正在构建数据库,遇到一个需要解决的问题。客户希望该数据库能够将图片链接到特定记录。我有它,所以图片不是OLE对象,而是链接到将位于其网络驱动器上的图片文件夹...因此,基本上,图片将是指向文件路径的超链接。...

我的问题是没有人知道我可以将数据库自动重新格式化为600 x 800尺寸以节省空间的方式吗?我们都知道,如果我不强迫数据库为他们做的话,那将不会发生,并且有可能吞噬宝贵的空间,因为这个数据库预计会变得很大。因此,我想使图片文件夹尽可能小,以便为数据库留出更多空间。

1 个答案:

答案 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也应支持这一点(使用“转换过滤器”及其“质量”属性)。