1

我需要将多页 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 
     }
4

1 回答 1

0

使用

$images->setresolution

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

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

$images->setImageUnits 

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

于 2013-02-13T21:24:49.487 回答