代码之家  ›  专栏  ›  技术社区  ›  senty

将彩色pdf转换为传真友好的灰度pdf(使用Imagick)

  •  3
  • senty  · 技术社区  · 7 年前

    我正在尝试将彩色pdf转换为传真友好的pdf(不要使用太多墨水)。Twilio的处理方式非常好。我相信这可以通过Imagick实现。我的主要动机是在服务器端使用Imagick进行转换,这样我的Twilio转换输入和输出就不会完全不同。

    我试过这些,但它们和Twilio的不一样:

    $img->quantizeImage(255, Imagick::COLORSPACE_GRAY, 1, TRUE, FALSE);
    $img->writeImage('output.png');
    
    // and 
    $img->quantizeImage(1, Imagick::COLORSPACE_GRAY, 1, TRUE, FALSE);
    

    以上代码段导致完全的颜色转换。


    让我向您展示Twilio是如何做到这一点的:

    原始PDF:

    enter image description here

    Twilio转换PDF:

    enter image description here

    以及Twilio转换PDF的缩放版本和纯色背景的图案:

    enter image description here

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  2
  •   fmw42    7 年前

    您没有发布实际的PDF,而是发布PNG图像。所以我用了这个。如果这不起作用,请发布一个链接到您的PDF。

    在Imagemagick中,可以添加抖动模式。我认为在Imagick中有等效的命令。以下是Imagemagick命令。

    convert l9IYF.png -colorspace gray -ordered-dither o3x3 tmp.png
    

    enter image description here

    convert l9IYF.png -colorspace gray -ordered-dither h6x6a tmp2.png
    

    enter image description here

    看见 https://www.imagemagick.org/Usage/quantize/#ordered-dither http://us3.php.net/manual/en/imagick.orderedposterizeimage.php