PHP ImageMagick - 图像裁剪

图像裁剪涉及剪切图像的一部分或通过修剪掉不需要的部分来减小图像的大小。 这使您可以只关注图像中的重要元素,同时丢弃任何不必要的元素。

使用 ImageMagick 进行图像裁剪是快速编辑图像的好方法,无需任何特殊软件或复杂的图形设计技术知识。

在本章中,您将学习使用 ImageMagick 库提供的内置函数裁剪图像。

图像裁剪

从图像中提取区域称为"裁剪"。 它只不过是去除图像中不需要的边缘或获取图像的特定部分。 这可以在 PHP 中使用 Imagemagick 中名为 'cropImage()' 的方法来完成。

语法

public Imagick::cropImage(int $width, int $height, int $x, int $y) : bool

参数

该方法接受 4 个参数,分别是宽度、高度、x 和 y。

  • Width − 作物宽度,

  • Height − 作物高度,

  • x − 裁剪区域左上角的 X 坐标。

  • y − 裁剪区域左上角的 Y 坐标。

获得的输出将是根据该方法中作为参数给出的测量值裁剪的图像。

示例

在下面的示例中,创建了一个 Imagick 对象并读取了输入图像。 随后,使用 'cropImage()' 函数,根据函数内提供的参数裁剪图像。 输出(即裁剪后的图像)可以直接显示在服务器上,也可以使用'writeImage()'函数以任何所需的名称和格式保存到您的系统。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.jpg");
   $image->cropImage(800, 750, 200, 100);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/newimage.png");
?>

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

Image-Cropping

输出

Image-Cropping

创建裁剪缩略图

缩略图是以较小图像的形式表示较大图像。 它旨在使查看或管理一组较大图像变得更加容易和快捷。 ImageMagick 通过提供方法'cropThumbnailImage()'来帮助我们创建裁剪后的缩略图。

语法

public Imagick::cropThumbnailImage(int $width, int $height, bool $legacy = false): bool

此方法通过首先放大或缩小图像并从中心裁剪指定区域来帮助创建固定大小的缩略图。

此方法有 2 个参数:width和height。 它们分别指定缩略图的宽度和高度。

示例

在下面的示例中,创建了 imagick 对象。 然后,使用'cropThumbnailImage()'函数获取固定大小的缩略图,并使用'writeImage()'函数获取输出。

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

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

创建裁剪缩略图

输出

创建裁剪缩略图

剪切图像

有时,在选择图像时,不需要整个图像。 在您想要提取图像或仅提取图像的特定区域的情况下,'chopImage()' 函数可以帮助我们。 此功能帮助我们根据用户的要求删除图像的某个区域并修剪图像。

语法

public Imagick::chopImage (int $width, int $height,int $x,int $y): bool

这个函数有4个参数,即,

  • width − width 也是一个整数值,存储剪切区域的宽度。

  • height − height'是一个整数值,存储被剪切区域的高度

  • x − 剪切区域的 x 坐标。

  • Y − 剪切区域的 y 坐标。

示例

在下面的示例中,您将学习如何使用'chopImage()'函数。 首先,创建一个 Imagick 对象并给出图像作为输入。

然后,将 'chopImage()' 应用于图像,参数包括宽度、高度、x 坐标和 y 坐标。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.jpeg");
   $image->chopImage (400, 40, 2, 2);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/chopImage.png");
?>

假设以下是程序中的输入图像(image.jpeg)−

剪切图片

输出

剪切图像