【发布时间】:2012-06-07 14:46:01
【问题描述】:
我想知道是否有一种方法可以使用 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);
输出图像的质量非常低,如下所示
【问题讨论】:
-
您所说的“分辨率”实际上是像素密度。很明显,如果图像的“物理尺寸”保持不变而像素数减少,那么像素密度也会降低,不是吗?
-
我被回答删除了,因为您似乎正在调整 PDF 文件的大小。请澄清帖子,以便清楚您在谈论 PDF 中的图像
-
@SirDarius,但物理尺寸并没有保持不变 - 他正在缩小图像。像素密度应保持 300ppi,但图像保存为 72ppi。
-
那么是的,调整大小操作后需要重置像素密度。你也可能想这样做: $im->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
-
您好,感谢您迄今为止的所有回答!佩卡。我实际上是在剪切 PDF 并将每一页转换为图像。大流士爵士。我要测试添加的 RESOLUTION_PIXELSPERINCH。
标签: php image-processing imagemagick resolution image-resizing