我们的文档管理系统中包含大量多页TIF文件(主要是文档扫描)。通过各种历史问题和最终用户的误解,大量这些误解比他们需要的大得多(例如,它们将以比所需更高的分辨率扫描,或者在没有压缩的情况下存储)。
我一直在寻找的是处理其中一些文档并进行一些优化,以便获得一些宝贵的存储空间(我已经恢复了25GB,只是拿出了非常低的水果)。
到目前为止,我一直在使用ImageMagick和Irfanview的组合,但我真的希望自动化这个过程,因为它目前非常耗费人力。我在创建一些脚本时遇到了麻烦,但不幸的是,有问题的TIF的性质证明是有问题的。
特别是,它们中的大多数都包含混合页面格式;基本字母页面的双层/ 1位页面和图像/地图/计划的全彩色RGB页面。大多数文档都有这些类型的混合,并不总是按照任何特定的顺序(实际上它们可能在这两种格式之间来回传递)。
理想情况下,我想在双层页面上使用第4组传真压缩,在彩色页面上使用JPEG压缩(因此在ImageMagick中使用-compress group4 / -compress jpeg标志),但似乎没有任何办法(我可以告诉 - 我对IM的经验有限,以每页格式为基础设置压缩。有谁知道这是否可能?或者,任何人都可以推荐具有此功能的脚本化工具吗?
Irfanview可以进行每页压缩,但必须通过GUI逐页手动设置,这显然不太理想。
任何提示都将不胜感激!
答案 0 :(得分:3)
由于我没有示例TIFF文件显示您描述的特征(混合格式,不同的压缩方案和不同页面的颜色空间......),这是第一次拍摄。
要自动处理多页TIFF,您需要知道可以通过将基于零的索引号[n]
附加到文件名来单独访问每张图片。
此外,您应该查找list of ImageMagick escpape shortcuts,这样您就可以构造一个identify -format <%escapestrings>
命令,该命令会自动从文件中提取有趣的位,然后您将使用该位作为进一步处理的基础。
因此,通过运行带有自定义identify
字符串的-format
来识别不同TIFF页面之间的各种特征,启动项目,例如:
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脚本。