📅  最后修改于: 2023-12-03 15:03:40.683000             🧑  作者: Mango
在开发Web应用时,经常需要对图片进行裁剪。PHP中提供了imagecrop()
函数来完成这个任务,但是它的参数比较繁琐,使用起来比较麻烦,所以我们可以自己封装一个cropImage()
函数来简化操作。
/**
* 裁剪图片
* @param string $srcImagePath 原始图片路径
* @param int $srcX 起始横坐标
* @param int $srcY 起始纵坐标
* @param int $srcW 裁剪宽度
* @param int $srcH 裁剪高度
* @param string $destImagePath 裁剪后图片保存路径
* @return bool 成功返回true,失败返回false
*/
function cropImage($srcImagePath, $srcX, $srcY, $srcW, $srcH, $destImagePath) {
// 获取原始图片信息
$info = getimagesize($srcImagePath);
$mime = $info['mime'];
switch($mime) {
case 'image/jpeg':
$srcImage = imagecreatefromjpeg($srcImagePath);
break;
case 'image/png':
$srcImage = imagecreatefrompng($srcImagePath);
break;
case 'image/gif':
$srcImage = imagecreatefromgif($srcImagePath);
break;
default:
return false;
}
// 创建目标图片
$destImage = imagecreatetruecolor($srcW, $srcH);
// 裁剪图片
imagecopyresampled($destImage, $srcImage, 0, 0, $srcX, $srcY, $srcW, $srcH, $srcW, $srcH);
// 保存目标图片
$result = false;
switch($mime) {
case 'image/jpeg':
$result = imagejpeg($destImage, $destImagePath);
break;
case 'image/png':
$result = imagepng($destImage, $destImagePath);
break;
case 'image/gif':
$result = imagegif($destImage, $destImagePath);
break;
default:
return false;
}
// 释放内存
imagedestroy($srcImage);
imagedestroy($destImage);
return $result;
}
| 参数名 | 参数类型 | 描述 | | --- | --- | --- | | $srcImagePath | string | 原始图片路径 | | $srcX | int | 起始横坐标 | | $srcY | int | 起始纵坐标 | | $srcW | int | 裁剪宽度 | | $srcH | int | 裁剪高度 | | $destImagePath | string | 裁剪后图片保存路径 |
| 返回值 | 类型 | 描述 | | --- | --- | --- | | true | bool | 成功 | | false | bool | 失败 |
$result = cropImage('test.jpg', 0, 0, 200, 200, 'test_crop.jpg');
if ($result) {
echo '裁剪成功';
} else {
echo '裁剪失败';
}