📜  PHP | imagick::shaveimage()函数(1)

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

PHP | imagick::shaveimage()函数

简介

imagick::shaveimage() 函数是 imagick 模块中用来裁剪图像边缘的函数,它能够削掉一张图片的边缘像素,实现图片的缩小和裁剪。此函数能够支持削减任意边框宽度和形状。

语法
public bool Imagick::shaveImage ( int $columns , int $rows , int $width , int $height )
参数
  • columns:要从左边削减的列数。
  • rows:要从顶部削减的行数。
  • width:希望最终生成的图像宽度。这个参数并不一定提供图像的实际大小,如果不设置该参数,则以去除边框后的实际大小为准。
  • height:希望最终生成的图像高度。这个参数并不一定提供图像的实际大小,如果不设置该参数,则以去除边框后的实际大小为准。
返回值

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

示例
<?php
// 创建一个 500 x 500 的画布
$imagick = new \Imagick();
$imagick->newImage(500, 500, new \ImagickPixel('white'));

// 在画布上面画一个 300 x 300 大小的红色矩形
$draw = new \ImagickDraw();
$draw->setFillColor(new \ImagickPixel('red'));
$draw->rectangle(100, 100, 400, 400);

$imagick->drawImage($draw);

// 削减掉红色矩形的边框,留下中央部分
$imagick->shaveImage(100, 100, 0, 0);

header('Content-Type: image/png');
echo $imagick;

以下为示例代码运行前:

before

以下为示例代码运行后的结果图:

after

这里我们从左边和顶部各裁剪了 100 像素,留下了中央的红色矩形。在这个示例里,由于我们没有设置 $width 和 $height 参数,输出的图片实际上并不是等比缩放到了 300 x 300 的大小,而是保留了原始图片的大小,因此输出的图片具有 400 x 400 的大小。

注意事项
  • 它有可能导致图片的失真,因为它裁剪掉了部分原有的信息。如果需要保留全部图像信息,建议使用缩放和裁剪相结合的方式来实现。
  • 由于该函数会更改原图像,因此强烈建议提前备份原图像。如果是从文件读取的图像,则建议先将图像复制到其他位置并进行处理。