3

我们的文档管理系统中包含大量多页 TIF 文件(主要是文档扫描)。由于各种历史问题和最终用户的误解,其中很大一部分比它们需要的要大得多(例如,它们将以比要求更高的分辨率进行扫描,或者未经压缩存储)。

我一直在研究其中一些文档并进行一些优化,以收回一些宝贵的存储空间(我已经恢复了 25GB,只是取出了非常低的果实)。

到目前为止,我一直在使用 ImageMagick 和 Irfanview 的组合,但我真的很想更加自动化这个过程,因为它目前非常耗费人力。我在创建一些脚本方面很擅长,但不幸的是,所讨论的 TIF 的性质被证明是有问题的。

特别是,它们中的大多数包含混合页面格式;用于基本字母页面的双级/1 位页面和用于图像/地图/计划的全彩色 RGB 页面。大多数文档将混合使用这些类型,并且并不总是以任何特定的顺序排列(实际上它们可能在这两种格式之间来回切换)。

理想情况下,我想在双层页面上使用第 4 组传真压缩并在彩色页面上使用 JPEG 压缩(因此 ImageMagick 中的 -compress group4 / -compress jpeg 标志)但似乎没有任何方法(我可以告诉 - 我IM 方面的经验有限)以按页面格式设置压缩。有谁知道这是否可能?或者任何人都可以推荐一个具有此功能的可编写脚本的工具吗?

Irfanview 可以进行逐页压缩,但必须通过 GUI 逐页手动设置,这显然不理想。

任何提示将非常感谢!

4

1 回答 1

3

由于我没有显示您描述的特征(混合格式、不同压缩方案和不同页面的色彩空间......)的示例 TIFF 文件,所以这是第一个镜头。

要自动处理多页 TIFF,您需要知道可以通过将其从零开始的索引号附加[n]到文件名来单独访问每张图片。

此外,您应该查找ImageMagick escpape 快捷方式列表,这样您就可以构建一个identify -format <%escapestrings>自动从文件中提取有趣位的命令,然后您将使用它来进行进一步处理。

identify因此,通过使用自定义字符串运行此类来识别不同 TIFF 页面之间的各种特征来开始您的项目-format,例如:

for i in $(seq 1 $(identify -format %n multipage.tiff)); do 
  identify -format \
    "scene-number:%s \
     image-width-in-pixels:%w \
     image-height-in-pixels:%h \
     x-resolution:%x \
     y-resolution:%y \
     image-depth:%z \
     imageclass+colorspace:%r \
     image-compression-type:%C \
     image-compression-quality:%Q \
     page-width:%W \
     page-height:%H" \
   multipage.tiff[$i]; 
 done

(出于教育原因,故意写得比需要的更冗长……)

在此基础上,您应该能够提出一个 shell 脚本来满足您的需求。

于 2012-08-09T22:24:39.603 回答