如何使用Imagick将图像的大小减小到设定的宽度?

时间:2015-06-23 15:34:21

标签: php imagick

我有一个照片库,其中封面照片的图像宽度为290像素,高度可以是任何高度。我想要Pinterest类型的效果。我正在尝试使用PHP和Imagick来做这件事,但似乎无法弄明白。有人可以帮忙吗?

这是我到目前为止的功能,但只是获得小图像。我在某处读到将高度设置为更高的数字会使其自动但无济于事。

function thumbnailImage($imagePath,$real_target_pathThumb) {

                $imagick = new Imagick($imagePath);
                $imagick->thumbnailImage(290, 9999, true, true);

                $imagick->writeImage($real_target_pathThumb);

            };

1 个答案:

答案 0 :(得分:1)

由于thumbnailImage函数不支持一维限制,因此最好的方法是使用宽高比并手动计算缩略图高度。这很简单:

$imagick = new Imagick($imagePath);
$imagick->thumbnailImage(290, (int)(290 * $imagick->getImageHeight() / $imagick->getImageWidth()));

你也可以省略(或设置为false)来自imagick的thumbnailImage方法的填充参数,就像这样

$imagick->thumbnailImage(290, 9999, true);

通过指定填充参数,您可以告诉函数使图像适合给定的尺寸,然后用颜色填充所有未使用的空间。

如果没有填充参数,此方法应该在大多数情况下都有效,但如果有人上传的图像应该高于9999px,则会失败。