【问题标题】:How do I resize an Image using PHP while retaining resolution?如何在保持分辨率的同时使用 PHP 调整图像大小?
【发布时间】: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);

输出图像的质量非常低,如下所示

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

【问题讨论】:

  • 您所说的“分辨率”实际上是像素密度。很明显,如果图像的“物理尺寸”保持不变而像素数减少,那么像素密度也会降低,不是吗?
  • 我被回答删除了,因为您似乎正在调整 PDF 文件的大小。请澄清帖子,以便清楚您在谈论 PDF 中的图像
  • @SirDarius,但物理尺寸并没有保持不变 - 他正在缩小图像。像素密度应保持 300ppi,但图像保存为 72ppi。
  • 那么是的,调整大小操作后需要重置像素密度。你也可能想这样做: $im->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
  • 您好,感谢您迄今为止的所有回答!佩卡。我实际上是在剪切 PDF 并将每一页转换为图像。大流士爵士。我要测试添加的 RESOLUTION_PIXELSPERINCH。

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


【解决方案1】:

在这里查看第一条评论:

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

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

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

【讨论】:

  • 希望您不介意,我将链接的相关部分提取到您的答案中。所以答案应该是答案,而不是链接 - 链接可能会过时。不过,相信您的来源并没有什么坏处。
  • 如前所述,这并没有真正起作用,因为我的猜测是缩放图像的功能会导致像素密度损失。
  • 好的,这是一张显示问题的图片,我正在使用 ->setImageUnits,i46.tinypic.com/ehfyf8.jpg 这就是我的代码现在的样子pastebin.com/wfaeSv2b
  • @CharlieM,尝试将其保存为无损格式,如 PNG。或者可以设置分辨率单位,然后设置分辨率,然后读取图像。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多