【问题标题】:set density parameter for imagick with php用php为imagick设置密度参数
【发布时间】:2012-12-11 14:52:53
【问题描述】:

我想使用 Imagick 将 pdf 页面转换为 png 图像。

我用PHP试过了,但是画质很差。
用命令行试试,结果很完美。

PHP 代码

$im = new imagick( __DIR__ . DIRECTORY_SEPARATOR.$PDFName.'['.$i.']' );  
$params = $im->identifyImage();
$width = $params['geometry']['width']*1;
$height = $params['geometry']['height']*1;
$im->setResolution(400,400);
$im->resizeImage($width ,$height, imagick::FILTER_SINC, 1, true);
$im->writeImage(__DIR__ . DIRECTORY_SEPARATOR.'pdf_pages\\'.$i.'.png'); 
$im->clear(); 
$im->destroy();

命令行代码

convert -density 400 a.pdf -resize 25% -a.png

PHP 代码(第二次尝试)

$im = new imagick( __DIR__ . DIRECTORY_SEPARATOR.$PDFName.'['.$i.']' );  
$im->setOption('density','400x400');
$im->setOption('resize','25%');
$im->writeImage(__DIR__ . DIRECTORY_SEPARATOR.'pdf_pages\\'.$i.'.png'); 
$im->clear(); 
$im->destroy();

结果仍然很糟糕。

我能做什么?我想在我的 PHP 代码中使用密度参数,但是如何使用呢?

使用 PHP 输出

命令行输出

【问题讨论】:

  • 您也应该提供 PDF 文件。
  • 这里是 PDF 文件 => cevhersys.net/5663.pdf
  • 另外,如果 PHP API 无法满足您的需求,您可以随时使用execshell_exec 执行命令并生成您需要的文件。

标签: php pdf png imagick


【解决方案1】:

来自手册http://php.net/manual/en/imagick.setresolution.php

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

看到这个答案Pdf to image using php-imagick api

【讨论】:

    【解决方案2】:

    您需要在阅读文件之前设置分辨率。

    $im = new imagick();
    $im->setResolution(200,200);
    $im->readImage(__DIR__ . DIRECTORY_SEPARATOR.$PDFName.'['.$i.']');
    

    然后,结果将是完美的。

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-03-27
      • 2011-05-03
      • 2015-04-11
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      相关资源
      最近更新 更多