我需要将多页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
}
答案 0 :(得分:0)
使用
$images->setresolution
设置图像的密度。而不是尝试1024,0(这就像使用 convert -density 1024x0 ),尝试将密度设置为200x200。
然后使用http://php.net/manual/en/imagick.setimageunits.php
$images->setImageUnits
设置该分辨率的单位(类似于“PixelsPerInch”)。这应该正确设置图像的清晰度。