ImageMagick将PDF转换为低分辨率JPG文件

时间:2014-02-21 13:12:17

标签: codeigniter pdf imagemagick

我一直在尝试使用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( );
       }
}

有人知道这里看起来有什么不对吗?

3 个答案:

答案 0 :(得分:3)

您需要CodeIgniter可能不支持的两件事,因此您必须直接使用ImageMagick。

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

要摆脱黑色背景,首先必须在白色背景上展平PDF。在命令行中,使用选项-background white -flatten。使用PHP imagick,setImageBackgroundColor and flattenImages应该可以工作。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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

然后将jpgs转换为pngs(使用ImageMagick):

mogrify -format jpg *.png