如何在保留分辨率的同时使用PHP调整图像大小?

时间:2012-06-07 14:46:01

标签: php image-processing imagemagick resolution image-resizing

我想知道是否有办法使用GD或ImageMagick这样的库来调整一批图像的大小,以便在保持其分辨率的同时调整图像大小?

目前,当我尝试向下调整图像大小(大约1000 X 775)时,我开始使用非常大的图像(大约3500 X 2400 @ 300ppi),我得到了正确尺寸的大图像,但分辨率下降到72ppi(由photoshop确认)。

$im = new Imagick();
//Initial resolution of image
$im->setResolution(300,300);

$im->readImage('mypdf.pdf');
$im->adaptiveResizeImage(707,1000);

我也用过:

$image->resizeImage(707,1000, imagick::FILTER_LANCZOS, 0.9, true);

但结果却差不多了。提前致谢。欢迎任何建议。

在阅读完这里的建议后,我的代码现在看起来像是

$im = new Imagick();
$im->setResolution(300,300);

$im->readImage('mypdf.pdf');
$im->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
$im->adaptiveResizeImage(707,1000);
$im->setResolution(300,300);
$im->setImageFormat( "jpg" );
$originalImageFile = 'myjpg.jpg';
$im->writeImage($originalImageFile);$im->setResolution(300,300);

输出图像的质量非常低,这就是它的样子

http://i46.tinypic.com/ehfyf8.jpg

2 个答案:

答案 0 :(得分:2)

点击此处的第一条评论:

http://php.net/manual/en/imagick.setresolution.php

除了设置分辨率,您还必须设置分辨率单位:

$im->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);

答案 1 :(得分:0)

在将图像保存到磁盘之前调整图像大小后再次尝试调用setResolution。此外,请参阅此处有关密度的说明:ImageMagick documentation