PHP ImageMagick - 图片大小调整



本章将学习如何使用 ImageMagick 提供的各种内置函数自适应地调整图像大小以及按特定尺寸缩放图像。

使用 ImageMagick 调整图像大小时,可以通过两种不同的方式实现:缩放或裁剪。缩放会导致大小成比例地增加或减少,而裁剪则会根据用户设置的特定参数裁掉原始图像的部分。

自适应调整图像大小

在许多情况下,我们希望将图像稍微缩小到较小的“网页尺寸”。为此,ImageMagick 提供了一种名为“adaptiveResizeImage()”的方法,它可以帮助自适应地调整图像大小。这还可以避免在颜色急剧变化时出现模糊。

语法

public Imagick::adaptiveResizeImage(int $columns, int $rows, bool $bestfit = false, bool $legacy = false): bool

此方法的参数为**列数、行数**和**bestfit**。

  • **列数**指定缩放图像中的列数。

  • **行数**表示缩放图像中的行数。

  • **bestfit** 指定是否将图像拟合到边界框内。

示例

以下示例演示如何在 PHP 中实现此函数。首先创建一个新的 Imagick 对象并获取输入图像。然后,对该输入图像应用**'adaptiveResizeImage()'**方法。最后,将输出图像保存为**'adaptiveResizeImage.png'**。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.jpg");
   $image->adaptiveResizeImage(2000, 1000);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/adaptiveResizeImage.png");
?>

假设程序中的输入图像如下 (image.jpg) −

Resizing Images Adaptively

输出

Resizing Images Adaptively

将图像缩放至所需尺寸

为了使图像适合网站,必须有一些所需的尺寸。将图像缩放至这些尺寸将删除不必要的像素,或创建或添加新的像素细节。ImageMagick 允许我们使用**‘resizeImage()’**方法在 PHP 中调整图像大小。它以图像作为输入,并根据所需尺寸调整其大小,并给出输出。

为了确保图像适合网站,必须将其缩放至特定尺寸。ImageMagick 的**'resizeImage()'**方法允许我们在 PHP 中执行此操作,它接受图像作为输入,并根据所需尺寸调整其大小,并返回生成的图像。

语法

public Imagick::resizeImage(int $columns, int $rows, int $filter, float $blur, bool $bestfit=false, bool $legacy=false):bool

**resizeImage()**方法的参数为列数、行数、滤镜、模糊度和bestfit。

  • **列数**和**行数**是分别指定图像宽度和高度的整数值。

  • **滤镜**是一个整数值,它指的是滤镜常量列表,例如 filter_point、filter_box、filter_triangle 等。

  • **模糊度**因子是浮点值。如果模糊度因子大于 1,则模糊;如果小于 1,则清晰。

  • **bestfit** 是一个可选的拟合参数。

示例

以下是使用 PHP 调整图像大小的示例。在这里,我们创建了一个新的 Imagick 对象和一个空图像(作为输入)。然后,对创建的图像调用**'resizeImage()'**方法。输出将为 PNG 格式,名为**'resizeImage'**。

<?php
   $img=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.jpg");
   $img->resizeImage(200, 300, null, null, null, null);
   $img->writeImage($_SERVER['DOCUMENT_ROOT']."/test/newimage.png");
?>

假设程序中的输入图像如下 (image.jpg) −

Scaling Images to Desired Dimensions

输出

Scaling Images to Desired Dimensions
广告