想象错误将pdf转换为png:Postscript委托失败了`/ tmp / magick-bpkD9zy7':@ error / pdf.c / ReadPDFImage / 663

时间:2013-02-13 20:02:01

标签: php imagick

我需要将多页PDF转换为将在浏览器中显示的一系列PNG。

此代码有效:

$images = new imagick();
$images->readimage($_FILES['upload']['tmp_name']);
$images->setformat('png');

    foreach ($images as $pageNumber => $image) {
       //Save individual images 
     }

但是它产生的质量很差的PNG几乎不可读。

此代码:

$images = new imagick();
$images->setresolution(1024,0);
$images->readimage($_FILES['upload']['tmp_name']);
$images->setformat('png');

    foreach ($images as $pageNumber => $image) {
       //Save individual images 
     }

在readimage()处生成以下错误:

Postscript delegate failed `/tmp/magick-bpkD9zy7': @ error/pdf.c/ReadPDFImage/663

我需要能够以比imagick默认值更高的分辨率光栅化PDF,以获得足够好的质量以便能够读取PNG。任何帮助将不胜感激。

编辑 - 以下是解决方案 - 感谢正确的网站

$images = new imagick();
$images->setimageunits(RESOLUTION_PIXELSPERINCH);
$images->setresolution(150,150);
$images->readimage($_FILES['upload']['tmp_name']);
$images->setformat('png');

    foreach ($images as $pageNumber => $image) {
       //Save individual images 
     }

1 个答案:

答案 0 :(得分:0)

使用

$images->setresolution

设置图像的密度。而不是尝试1024,0(这就像使用 convert -density 1024x0 ),尝试将密度设置为200x200。

然后使用http://php.net/manual/en/imagick.setimageunits.php

$images->setImageUnits 

设置该分辨率的单位(类似于“PixelsPerInch”)。这应该正确设置图像的清晰度。