📜  PHP |想象一下cropImage()函数(1)

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

PHP | 想象一下cropImage()函数

介绍

在开发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 '裁剪失败';
}