【问题标题】:ImageMagick Convert PDF to low resolution JPG fileImageMagick 将 PDF 转换为低分辨率 JPG 文件
【发布时间】:2014-03-23 00:38:51
【问题描述】:

我一直在尝试使用 CodeIgniter 上的 ImageMagick 将 PDF 转换为 JPG 图像,但生成的图像质量低,并且由于某种原因总是具有黑色背景(而 PDF 不是)。

我正在使用的代码

public function converter($pdf){
    $this->load->library('image_lib');

    $config = array(
        'image_library' => 'imagemagick',
        'library_path' => '/usr/bin/convert',
        'source_image' => "./pdf/".$pdf,
        'new_image' => "./images/a.jpg",
        'maintain_ratio' => true,
        'width' => 980,
        'quality' => '90%',
       );

       $this->image_lib->initialize( $config );

       if ( $this->image_lib->resize( ) ) {
        $this->image_lib->clear( );
       }
}

有人知道这里似乎有什么问题吗?

【问题讨论】:

  • 您是否查看过“-transparent-color”,例如将白色指定为透明色?根据文档,ImageMagick 的默认透明颜色为黑色。
  • 您是否查看过此文本质量问题? *.com/questions/15769623/…

标签: codeigniter pdf imagemagick


【解决方案1】:

你需要 CodeIgniter 可能不支持的两个东西,所以你必须直接使用 ImageMagick。

首先,您必须设置 PDF 的分辨率以获得高质量的结果。在 ImageMagick 命令行上,这可以通过 -density 选项来完成。使用 PHP imagick,请使用 setResolution

要去除黑色背景,您必须先将 PDF 拼合在白色背景上。在命令行上,使用选项-background white -flatten。使用 PHP imagick,setImageBackgroundColor and flattenImages 应该可以工作。

【讨论】:

    【解决方案2】:

    您可以在“image_lib”库的首选项中设置输出图片的质量和透明度。请阅读http://ellislab.com/codeigniter/user-guide/libraries/image_lib.html 并寻找“质量”和“wm_x_transp”选项。

    【讨论】:

    • 在代码中,我使用 90% 的质量,这几乎是完美的,pdf 上的图像看起来非常好,但文本看起来完全不可读。
    • 其实这个是不对的,wm_x_transp是给watermark的,不是给图片的
    【解决方案3】:

    我遇到了类似的问题,我通过调用 GhostScript 创建一个 png 文件为自己解决了这个问题(创建的 jpg 质量不够高):

    "gswin64c -r150 -dNOPAUSE -dBATCH -sDEVICE#pngalpha -sOutputFile=" + strTitle + "-%%02d.png " + strTitle + ".pdf"
    

    然后将 jpg 转换为 png(使用 ImageMagick):

    mogrify -format jpg *.png
    

    【讨论】:

    • 这工作得更好谢谢convert谢谢! :-)
    最近更新 更多