我一直在尝试使用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( );
}
}
有人知道这里看起来有什么不对吗?
答案 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