📅  最后修改于: 2023-12-03 15:03:40.504000             🧑  作者: Mango
在开发网站和应用程序时,经常需要旋转图片。为此,我们可以编写一个函数 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 内置的图像处理库,因此可以直接使用。