duanputian5341
2017-09-04 12:55
浏览 478
已采纳

从PDF文件转换的图像质量不佳(PHP + Imagick)

My code:

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

Results:

Original file:

enter image description here

After Imagick:

enter image description here

As we can see lines and letters are worse. How can I improve the quality?

图片转代码服务由CSDN问答提供 功能建议

我的代码:

   $ pdf = $ this-&gt; name; 
 $ saveAsPath = $ this-&gt; path; 
 
 $ img = new \ Imagick($ pdf); 
 $ img-&gt; setResolution(300,300)  ; 
 $ num_pages = $ img-&gt; getNumberImages(); 
 $ img-&gt; setImageCompressionQuality(100); 
 
for($ i = 0; $ i&lt; $ num_pages; $ i ++){
  $ img-&gt; setIteratorIndex($ i); 
 $ img-&gt; setImageFormat('jpeg'); 
 $ img-&gt; writeImage($ saveAsPath。'/'。$ i。'。jpg');  \ N} 
 
 $的img-&GT;破坏(); 
   
 
 

<强>结果:

原始文件:

在Imagick之后:

我们可以看到线条 d字母更糟糕。 如何提高质量?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dqve65954 2017-10-10 16:36
    已采纳

    From the documentation http://php.net/manual/en/imagick.setresolution.php:

    Imagick::setResolution() must be called before loading or creating an image.

    So, this is the working solution:

    $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();
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题