2014-02-21 82 views
3

我一直试图使用CodeIgniter上的ImageMagick将PDF转换为JPG图像,但生成的图像质量较差,出于某种原因始终具有黑色背景(而不是PDF)。ImageMagick将PDF转换为低分辨率JPG文件

我使用

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(); 
     } 
} 

人有什么做任何想法的代码似乎是错在这里?

+0

你看过“-transparent-color”来指定白色为透明色吗?根据文档,ImageMagick的默认透明色为黑色。 –

+0

你有没有看过这个文字质量问题? http://stackoverflow.com/questions/15769623/imagemagick-convert-pdf-to-jpeg-has-poor-text-quality-after-upgrading-imagemagic –

回答

2

你需要一个笨可能不支持,所以你必须直接使用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”选项。

+0

在代码中,即时通讯使用近90%的质量完美,PDF上的图像看起来非常好,但文字看起来完全不可读。 – Khaled

+1

其实这是不正确的,'wm_x_transp'是*水印*,不是图像 – Jakub

0

我碰到类似的问题,我通过调用GhostScript的创建png文件解决了我自己(创建JPG不够高品质):

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

然后转换至JPG文件PNG图像(使用ImageMagick):

mogrify -format jpg *.png 
相关问题