【问题标题】:Converting MS Access "OLE Objects" back to plain JPEGs - best way?将 MS Access“OLE 对象”转换回纯 JPEG——最好的方法?
【发布时间】:2010-09-11 23:24:30
【问题描述】:

背景:我们有一个旧的(但对业务至关重要的)SQL Server 数据库和一个 MS Access ADP 前端;这最初是从一系列 Access 数据库升级到 SQL Server。

该数据库为我们的客户跟踪危险材料,并存储大量图像。这些图像是从 MS Access 插入的,并作为 OLE 对象放入数据库中。

问题是:

  • 除了 Access/Office 之外的任何内容都很难读出这些内容
  • 存在巨大的存储开销 - 约 10GB 的图像占用 600+ GB 的存储空间(!)

我的问题是:您建议用什么方法将这些臃肿的对象转换回简单的 JPEG?一旦我们这样做了,我们终于可以将前端从 Access 迁移到一个简单的基于 Web 的系统上,我们的备份时间将再次变得易于管理!

【问题讨论】:

    标签: ms-access image


    【解决方案1】:

    我认为您的数据库变得如此臃肿的原因是 JPG 也作为位图存储在“OLE 对象”结构中,或者我已经看到了,这取决于插入 JPEG 的方法。

    这不是最佳的,但是:对于数据库中的每个图像,我会以编程方式创建一个仅包含图像的虚拟 .doc,然后将其传递给 OpenOffice 转换,并从生成的 OpenOffice 文档的图像子文件夹中提取 JPEG (这是一个 ZIP 文件)。

    然后我会用原始 JPEG 数据替换数据库中的 OLE 文档,但是我无法让您在自定义应用程序中清楚地显示它们(除非它是 Web 应用程序)。

    【讨论】:

      【解决方案2】:

      http:http://stackoverflow.com/Content/img/wmd/ul.png//www.access-im-unternehmen.de/index1.php?BeitragID=337&id=300 获取 *.bas 文件(不幸的是它是德语)。

      它使用 MS 的 GDI+ 库(包含在 Win 标准安装中)将图片导入/导出到 Access OLE。

      界面粗略翻译:

      • IsGDIPInstalled:检查 GDI+ 的安装
      • InitGDIP:GDI+ 的初始化。
      • ShutDownGDIP:取消 GDI+ 的初始化(重要且要使用!)
      • Lo​​adPictureGDIP:在 StdPicture 对象(bmp、gif、jp(e)g、tif、png、wmf、emf 和 ico)中加载图片。
      • ResampleGDIP:将图片缩放到新的尺寸并在需要时进行锐化。
      • MakeThumbGDIP:制作缩略图并用颜色填充边框。
      • GetDimensionsGDIP:获取 TSize-Struktur 中的尺寸(以像素为单位)。
      • SavePicGDIPlus:将文件中的图片对象保存为 BMP、GIF、PNG 或 JPG(具有给定质量的 jpg)
      • ArrayFromPicture:返回图片的字节数组,将图片放入表的OLE字段中
      • ArrayToPicture:创建包含图片的表的 OLE 字段的字节数组

      【讨论】:

      • 谢谢你,我会试一试的。考虑到我必须传输的数据量,我最终可能会在一夜之间批量转换图像,同时连接新的前端。赞赏!
      【解决方案3】:

      【讨论】:

      • 您可能会考虑编辑您之前的答案并修复该链接格式?
      【解决方案4】:

      使用 Access MVP Stephen Lebans ExtractInventoryOLE 工具将 OLE 对象从表中提取到单独的文件中。

      http://www.lebans.com/oletodisk.htm

      根据 Lebans:“不需要作为 OLE 服务器的原始应用程序来插入对象。支持所有 MS Office 文档、PDF、MS Photo Editor、MS Paint 和 Paint Shop Pro 插入的所有图像。还有支持提取包含原始文件名的 PACKAGE 类。"

      此外,Access 2007 存储 OLE 对象的效率比以前版本的历史 BMP 格式要高得多,因此如果您将 Access 应用程序从 600+GB 的 SQL 存储空间转换过来,您将拥有更小的存储空间并能够保留它服务器访问 2007 accdb 格式。您的备份时间是可控的,您无需花时间将 Access 前端转换为 Web 前端。

      【讨论】:

      • 适用于 .mdb 和 .mde 访问格式。我对 .accdb 文件有同样的问题。
      猜你喜欢
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      • 2017-02-14
      相关资源
      最近更新 更多