2017-09-04 179 views
1

我的代码:图像质量很差从PDF文件转换(PHP + Imagick)

$pdf = $this->name; 
$saveAsPath = $this->path; 

$img = new \Imagick($pdf); 
$img->setResolution(300, 300); 
$num_pages = $img->getNumberImages(); 
$img->setImageCompressionQuality(100); 

for ($i = 0; $i < $num_pages; $i++) { 
    $img->setIteratorIndex($i); 
    $img->setImageFormat('jpeg'); 
    $img->writeImage($saveAsPath . '/' . $i.'.jpg'); 
} 

$img->destroy(); 

结果:

原始文件:

enter image description here

在Ima之后gick:

enter image description here

正如我们看到的线条和文字是雪上加霜。我怎样才能提高质量?

+0

你可以尝试''$ img-> setImageCompressionQuality(0);'' - 有点直觉,我知道了。 – alistaircol

+0

@alistaircol看起来更好。非常感谢。 –

回答

0

从文档http://php.net/manual/en/imagick.setresolution.php

Imagick :: setResolution()必须加载或创建映像之前调用。

所以,这是工作的解决方案:

$pdf = $this->name; 
$saveAsPath = $this->path; 

$img = new \Imagick(); 
$img->setResolution(300, 300); 
$img->readImage($pdf); 
$num_pages = $img->getNumberImages(); 
$img->setImageCompressionQuality(100); 

for ($i = 0; $i < $num_pages; $i++) { 
    $img->setIteratorIndex($i); 
    $img->setImageFormat('jpeg'); 
    $img->writeImage($saveAsPath . '/' . $i.'.jpg'); 
} 

$img->destroy();