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

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

PHP | 想象一下 rotateImage() 函数

在开发网站和应用程序时,经常需要旋转图片。为此,我们可以编写一个函数 rotateImage() 来实现这个功能。

函数声明
/**
 * 旋转图片
 *
 * @param string $imagePath 图片路径
 * @param float $angle 旋转角度(顺时针为正,逆时针为负)
 *
 * @return bool 是否旋转成功
 */
function rotateImage(string $imagePath, float $angle): bool
{
    // TODO: 实现旋转图片的代码
}

此函数接收两个参数:图片路径和旋转角度,返回旋转是否成功的布尔值。

实现思路

在 PHP 中,可以使用 GD 库来实现图片操作。通过 imagecreatefromXXX() 函数和 imageXXX() 函数,我们可以读取和操作图片。具体实现如下:

function rotateImage(string $imagePath, float $angle): bool
{
    // 检查图片是否存在且可读
    if (!is_readable($imagePath)) {
        return false;
    }

    // 获取图片信息
    $info = getimagesize($imagePath);
    if (!$info) {
        return false;
    }

    // 根据图片类型创建画布
    switch ($info[2]) {
        case IMAGETYPE_GIF:
            $src = imagecreatefromgif($imagePath);
            break;
        case IMAGETYPE_JPEG:
            $src = imagecreatefromjpeg($imagePath);
            break;
        case IMAGETYPE_PNG:
            $src = imagecreatefrompng($imagePath);
            break;
        default:
            return false;
    }

    // 旋转图片
    $dst = imagerotate($src, $angle, 0);

    // 保存旋转后的图片
    switch ($info[2]) {
        case IMAGETYPE_GIF:
            imagegif($dst, $imagePath);
            break;
        case IMAGETYPE_JPEG:
            imagejpeg($dst, $imagePath);
            break;
        case IMAGETYPE_PNG:
            imagepng($dst, $imagePath);
            break;
    }

    // 释放资源
    imagedestroy($src);
    imagedestroy($dst);

    return true;
}

我们首先检查图片是否存在且可读。然后,我们使用 getimagesize() 函数获取图片信息,包括类型、宽度和高度。接着,根据图片类型使用 imagecreatefromXXX() 函数创建画布。

imagerotate() 函数可以旋转图片,其第一个参数是源画布,第二个参数是旋转角度,第三个参数是背景色(可选,默认为黑色)。这个函数将返回旋转后的画布。

最后,我们使用 imageXXX() 函数保存旋转后的图片。保存成功后,释放源画布和旋转后的画布资源,并返回旋转是否成功的布尔值。

调用示例
// 旋转图片
$imagePath = 'path/to/image.jpg';
$angle = 45;
$success = rotateImage($imagePath, $angle);
if ($success) {
    echo '图片旋转成功';
} else {
    echo '图片旋转失败';
}
总结

通过 rotateImage() 函数,我们可以方便地旋转图片。这个函数的实现依赖 GD 库的支持,而 GD 库是 PHP 内置的图像处理库,因此可以直接使用。