【问题标题】:ghostscript downsampling of pdf images, downsample factor errorpdf图像的ghostscript下采样,下采样因子错误
【发布时间】:2016-10-08 20:26:52
【问题描述】:

我发出以下命令:

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。但似乎图像都略有偏差?

  1. 有没有办法指定因子而不是 dpi?
  2. 有没有办法“四舍五入”这个因素?

【问题讨论】:

    标签: pdf ghostscript downsampling


    【解决方案1】:

    不,无法指定因子(这是蒸馏器参数的 Adob​​e 规范,我们目前仅限于这些参数)。如果不修改源代码,您也无法指定舍入的近似值。

    您可以使用不同的下采样算法。

    [很久以后]

    其实我只是检查了当前的代码,你肯定用的是旧版本的 Ghostscript。

    当前默认的下采样过滤器是 Bicubic 过滤器,如果您强制使用 Subsample 过滤器,则代码会检查请求的下采样因子是否为整数。

    如果因子不是整数但在整数的 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"
    

    这会产生一条错误消息,指出可用于单色图像的唯一过滤器是 Subsample,然后是您引用的有关不精确因素的错误消息。

    我想这基本上表明我的观点是,示例文件对于调查问题非常重要。

    所以那里有一个问题,我会调查它,显然对于单色图像,它应该被钳制到最接近的整数分辨率,因为没有其他过滤器是可能的。但是,灰色和彩色图像确实可以正常工作。

    正如我在早期评论中所建议的那样,报告错误可能会更早到达这一点。我仍然建议你这样做,以免被忽视。

    您可能有兴趣注意,对我来说,当我对单色图像进行下采样但按照上面的命令行对其他图像进行下采样时,生成的文件是原始文件的 785KB为 2.5MB。

    【讨论】:

    • 我刚刚从 9.19 升级到 Ghostscript 的 9.20,但仍然出现错误。
    • 好吧,我在这里试过了,显然没有使用你的文件,因为你还没有发布,它对我有用。所以要么你的文件有什么有趣的地方,要么是你的 Ghostscript 版本。 GS哪里来的?我们知道包维护者有时会修改源代码,并且可能会出现问题。我建议要么从源代码构建自己,要么报告错误,因为代码并不是这样工作的。如果您报告错误,请不要忘记包含文件和命令行以重现问题。
    • 实际上,即使我指定 -dColorDownsampleOption=/Bicubic,我也会遇到同样的错误
    • 没有名为“ColorDownsampleOption”的开关。您使用的 Ghostscript 版本是什么?你从哪里弄来的?一个包,自己构建的源代码,还有别的吗?由于您没有提供自己的文件,我显然无法检查您是否没有从我上次的评论中回答这些相同的问题,所以除了重复我所说的之外,我无法添加更多内容;我自己在当前代码上试过这个,它按预期工作。
    • 我认为我拥有的 gs 来自 OS X。这是我从 gs -v 获得的:GPL Ghostscript 9.20 (2016-09-26) 版权所有 (C) 2016 Artifex Software, Inc. All保留权利。这是发生此错误的文件:s000.tinyupload.com/?file_id=37816699071848940536 我正在使用的命令是:
    猜你喜欢
    • 1970-01-01
    • 2014-12-21
    • 2017-03-23
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多