📜  PHP | imagick setImageClipMask()函数(1)

📅  最后修改于: 2023-12-03 15:18:24.100000             🧑  作者: Mango

PHP | imagick setImageClipMask()函数

简介

setImageClipMask() 函数是 imagick 类中的一个方法,用于设置图像的剪切掩码。通俗的讲,就是利用一张图像来对原图进行一个像素级别的裁剪。

语法
public bool Imagick::setImageClipMask ( mixed $clip_mask )
参数
  • $clip_mask:可选参数,用于设置剪切掩码的 imagick 对象。如果传入的是 null,则会取消当前的剪切掩码。如果传入的是一个值,则会将其转换为 imagick 对象。如果传入的是一个代表文件路径的字符串,则 imagick 将会读取这个路径对应的文件并将其作为剪切掩码。
返回值

成功时返回 true,失败时返回 false。

示例
示例1

此示例展示了如何使用另一张图像作为剪切掩码,以剪切当前的图像。

// 创建对象并读取原图
$image = new Imagick('image.jpg');

// 读取掩码图片并进行缩放,确保和原图大小一致
$clipMask = new Imagick('clip_mask.png');
$clipMask->scaleImage($image->getImageWidth(), $image->getImageHeight());

// 设置剪切掩码并剪切
$image->setImageClipMask($clipMask);
$image->cropImage($image->getImageWidth() / 2, $image->getImageHeight() / 2, 0, 0);

// 显示结果
header('Content-Type: image/png');
echo $image;

上述代码会将原图的左上角一半部分裁剪出来,然后显示在浏览器中。注意,setImageClipMask() 函数是 Imagick 类中的一个方法,因此需要先实例化一个 Imagick 对象。

示例2

此示例演示了如何使用像素级别的剪切掩码。我们将会使用一个白色正方形掩码对一张黑色背景的图进行裁剪。掩码大小和原图大小均为 100x100。

// 创建 100x100 的黑色背景图
$image = new Imagick();
$image->newImage(100, 100, 'black');

// 创建 100x100 的白色正方形掩码
$clipMask = new Imagick();
$clipMask->newImage(100, 100, 'white');

// 设置剪切掩码并剪切
$image->setImageClipMask($clipMask);
$image->cropImage(50, 50, 50, 50);

// 显示结果
header('Content-Type: image/png');
echo $image;

上述代码会将原图的中央一半部分裁剪出来,然后显示在浏览器中。

注意事项
  • 剪切掩码必须和原图的大小相同,否则无法对其进行剪切。
  • 在设置剪切掩码之前,需要将掩码对象进行缩放,确保其大小与原图相同。未经过缩放处理的掩码对象会被自动拉伸/压缩以适应原图大小,导致最终的剪切效果不符合预期。