pdf图像的重影脚本下采样,下采样因子错误

pdf图像的重影脚本下采样,下采样因子错误,pdf,ghostscript,downsampling,Pdf,Ghostscript,Downsampling,我发出以下命令: 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 in

我发出以下命令:

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
(在某些页面上)

以及:

最初,我尝试将采样降低到150dpi,这给出了因子(2.40??)的错误,这意味着多个错误,其中最后几个数字对于不同的页面是不同的。所以我猜图像大约是150*2.4=360 dpi。所以我试着降低采样到180。但是看起来所有的图像都有点不对劲

  • 有没有办法指定系数而不是dpi
  • 有没有办法“取整”这个因素

  • 不,无法指定系数(这是Adobe针对蒸馏器参数的规范,我们目前仅限于此)。如果不修改源代码,也不能为舍入指定近似值

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

    [很久以后]

    事实上,我刚刚检查了当前代码,您一定在使用旧版本的Ghostscript

    当前默认的下采样过滤器是双三次过滤器,如果强制使用子采样过滤器,则代码将检查请求的下采样因子是否为整数

    如果因子不是整数,但在整数的0.1范围内,则强制因子为最接近的整数

    如果它超出整数因子的0.1,则它中止子样本过滤器并切换到双三次

    我建议升级

    [稍后编辑]

    因此,为了避免伪彩色下采样,问题实际上根本不是彩色图像,也不是它的单色图像,或者更准确地说,是图像遮罩

    我设置了以下命令行:

    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"
    
    这就产生了一个错误信息,单色图像唯一可用的过滤器是子样本,然后是关于不精确因子的错误信息

    我想这基本上说明了我的观点,一个示例文件对于调查问题非常重要

    所以这里有一个问题,我将研究它,显然对于单色图像,它应该被钳制到最接近的整数分辨率,因为没有其他的滤波器是可能的。然而,灰色和彩色图像确实可以按预期工作

    正如我在早期评论中所建议的那样,报告一个bug可能会更快地到达这一点。我仍然建议你这样做,这样就不会忽视这一点


    您可能会感兴趣地注意到,对我来说,当我不对单色图像进行下采样,但对其他图像进行下采样时,根据上面的命令行,生成的文件是785KB,原始文件是2.5MB。

    我刚从9.19升级到ghostscript的9.20,但仍然会出现错误。我在这里尝试过,显然没有使用你的文件,因为你还没有发布一个,而且它对我有效。所以要么你的文件有什么有趣的地方,要么你的Ghostscript版本。你是从哪里弄来的?我们知道,包维护人员有时会修改源代码,这可能是一个问题。我建议您要么从源代码构建自己,要么报告一个bug,因为代码不是要这样工作的。如果报告错误,请不要忘记包含文件和命令行以重现问题。实际上,即使指定-dColorDownsampleOption=/bicubict,也会出现相同的错误没有名为“ColorDownsampleOption”的开关。您使用的Ghostscript版本是什么?你从哪里弄来的?一个软件包,你自己制作的源代码,还有别的吗?由于您没有提供您自己的文件,我显然无法检查您是否没有回答我上次评论中的这些问题,因此除了重复我所说的内容之外,我无法补充任何内容;我自己也在当前代码上尝试过,它的工作原理与预期一致。我认为我拥有的gs来自OS X。这是我从gs-v:GPL Ghostscript 9.20(2016-09-26)获得的版权(C)2016 Artifex Software,Inc.保留所有权利。以下是发生此错误的文件:我使用的命令是:
    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"