我发出以下命令:
gs \
-o downsampled.pdf \
-sDEVICE=pdfwrite \
-dDownsampleColorImages=true \
-dColorImageResolution=180 \
-dColorImageDownsampleThreshold=1.0 \
并收到以下错误:
Subsample filter does not support non-integer downsample factor (1.994360)
Failed to initialise downsample filter, downsampling aborted
(在某些页面上)
和
Subsample filter does not support non-integer downsample factor (2.000029)
Failed to initialise downsample filter, downsampling aborted
最初我尝试下采样到150dpi,这给出了因子(2.40 ????)的错误,意味着多个错误,其中最后几个数字对于不同的页面是不同的。所以我猜测图像大约是150 * 2.4 = 360 dpi。所以我尝试下采样到180.但似乎图像都略有偏差?
答案 0 :(得分:3)
不,没有办法指定因子(这是关于蒸馏器参数的Adobe规范,我们目前仅限于那些)。在不修改源代码的情况下,也无法指定舍入的近似值。
您可以使用不同的下采样算法。
[很久以后]
事实上我刚检查了当前的代码,你必须使用旧版本的Ghostscript。
当前的默认下采样过滤器是Bicubic过滤器,如果您强制执行子样本过滤器,则代码会检查所请求的下采样因子是否为整数。
如果因子不是整数但是在整数的0.1之内,那么它会将因子强制为最接近的整数。
如果它在整数因子的0.1之外,那么它将中止子采样过滤器并切换到Bicubic。
我建议升级。
[稍后编辑]
因此,避免伪造的ColorDownsampleOption,问题实际上根本不是彩色图像,单色图像,或者更准确地说是图像掩模。
我设置了这个命令行:
gs
-sDEVICE=pdfwrite \
-sOutputFile=pdfwrite.pdf \
-dDownsampleColorImages=true \
-dDownsampleGrayImages=true \
-dDownsampleMonoImages=true \
-dColorImageDownsampleThreshold=1 \
-dGrayImageDownsampleThreshold=1 \
-dMonoImageDownsampleThreshold=1 \
-dColorImageDownsampleType=/Bicubic \
-dGrayImageDownsampleType=/Bicubic \
-dMonoImageDownsampleType=/Bicubic \
-dColorImageResolution=72 \
-dGrayImageResolution=72 \
-dMonoImageResolution=100 "gs sample.pdf"
这会产生一条错误消息,指出单色图像可用的唯一过滤器是子样本,然后是您引用的关于不精确因子的错误消息。
我想基本上这就说明了一个示例文件对于调查问题非常重要。
所以那里有一个问题,我会调查它,显然对于单色图像,它应该被钳位到最接近的整数分辨率,因为没有其他滤波器是可能的。但是,灰色和彩色图像可以按预期工作。
正如我在早期评论中所建议的那样,报告错误可能会更快地达到这一点。我仍然建议你这样做,这样就不会被忽视。
您可能有兴趣注意,对我来说,当我不下采样单色图像时生成的文件,但根据上面的命令行对其他文件进行缩减采样,是原始的785KB是2.5MB。