Adm*_*Tso 2 pdf ghostscript downsampling
我发出以下命令:
gs \
-o downsampled.pdf \
-sDEVICE=pdfwrite \
-dDownsampleColorImages=true \
-dColorImageResolution=180 \
-dColorImageDownsampleThreshold=1.0 \
Run Code Online (Sandbox Code Playgroud)
并得到以下错误:
Subsample filter does not support non-integer downsample factor (1.994360)
Failed to initialise downsample filter, downsampling aborted
Run Code Online (Sandbox Code Playgroud)
(在某些页面上)
和:
Subsample filter does not support non-integer downsample factor (2.000029)
Failed to initialise downsample filter, downsampling aborted
Run Code Online (Sandbox Code Playgroud)
最初我试图将采样降低到 150dpi,这给出了因子为 (2.40????) 的错误,这意味着多个错误,其中不同页面的最后几位数字不同。所以我猜图像大约是 150*2.4 = 360 dpi。所以我尝试下采样到 180。但似乎图像都略有偏差?
不,无法指定因子(这是 Adobe 对蒸馏器参数的规范,我们目前仅限于这些)。您也不能在不修改源代码的情况下指定四舍五入的近似值。
您可以使用不同的下采样算法。
[很久以后]
事实上,我只是检查了当前的代码,你肯定使用的是旧版本的 Ghostscript。
当前默认的下采样过滤器是双三次过滤器,如果您强制使用子采样过滤器,则代码会检查请求的下采样因子是否为整数。
如果因子不是整数而是在整数的 0.1 以内,那么它会将因子强制为最接近的整数。
如果它在整数因子的 0.1 之外,则它中止子样本过滤器并切换到双三次。
我建议升级。
[后期编辑]
因此,避免使用虚假的 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"
Run Code Online (Sandbox Code Playgroud)
这会产生一条错误消息,表明可用于单色图像的唯一过滤器是 Subsample,然后是您引用的有关不精确因素的错误消息。
我想基本上这说明了我的观点,即示例文件对于调查问题非常重要。
所以那里有一个问题,我会研究它,显然对于单色图像,它应该被限制到最接近的整数分辨率,因为没有其他过滤器是可能的。但是,灰色和彩色图像确实按预期工作。
报告错误,正如我在早期评论中所建议的那样,可能会更快地达到这一点。我仍然建议你这样做,这样就不会被忽视。
您可能有兴趣注意到,对我来说,当我不对单色图像进行下采样,而是按照上面的命令行对其他图像进行下采样时,生成的文件为 785KB,原始文件为 2.5MB。
归档时间: |
|
查看次数: |
3543 次 |
最近记录: |