【发布时间】:2018-04-14 06:16:22
【问题描述】:
我正在使用 Imagick::resizeImage 为 pdf 文件的每一页创建缩略图 PNG 图像。然而,我得到的图像真的很模糊。我怎样才能使它更尖锐一点?任何指针将不胜感激。
我尝试在 0.1 - 1 之间调整 Imagick::resizeImage 的“模糊”参数,但没有成功。
$pdfPage = '1Mpublic.pdf[0]';
$im = new imagick($pdfPage);
$im->setImageFormat('png');
// Resize thumbnail image
$imgHeight = $im -> getImageHeight();
$imgWidth = $im -> getImageWidth();
$desiredWidth = 200;
$desiredHeight = resizedImageHeight($imgWidth, $imgHeight, $desiredWidth);
$im -> setResolution(1500, 1500);
$im -> resizeImage($desiredWidth, $desiredHeight, imagick::STYLE_NORMAL, 0.1);
/* Resize image */
function resizedImageHeight($imgWidth, $imgHeight, $desiredImgWidth){
$quoient = $imgWidth/$imgHeight;
$height = $desiredImgWidth/$quoient;
return $height;
}
原始pdf链接:
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4905263/pdf/ksgt-06-04-1091539.pdf
【问题讨论】:
-
PHP 文档中的此注释使用“setResolution”选项:php.net/manual/en/imagick.construct.php#113801 - 你试过了吗?
-
@Philip 我已经尝试过 - 请参阅编辑。
-
PDF 文件是没有像素的矢量文件,以英寸或厘米为单位。您必须将它们栅格化为像素。但是要告诉它制作光栅图像有多大,你必须告诉它你想要的光栅化分辨率。所以必须把setResolution 设置成一个大的值比如300
before来阅读PDF。但是你想要的 width=200 太小了,无法得到任何合理的东西 -
@fmw42 我是使用 imgick 的新手。请你能给我一些关于如何光栅化 pdf 的广泛指示,以及在阅读 pdf 文件之前我将如何设置分辨率?我想要的宽度是灵活的。也许你可以分享一些代码?
-
您还使用
STYLE_NORMAL作为调整大小算法的参数——该参数应该是FILTER_常量之一(例如Imagick::FILTER_LANCZOS)。但解决方案是主要问题。
标签: php imagemagick imagick resize-image