PHP函数实现图片缩放与裁剪的方法
发布时间:2023-11-26 11:56:42
实现图片缩放与裁剪可以使用PHP的GD库,GD库是一个具有图形处理功能的扩展库。下面是一个使用GD库实现图片缩放与裁剪的示例代码。
<?php
/**
* 图片缩放与裁剪函数
*
* @param string $srcPath 原始图片路径
* @param string $dstPath 缩放与裁剪后的图片保存路径
* @param int $newWidth 缩放后的图片宽度
* @param int $newHeight 缩放后的图片高度
* @param int $cropX 裁剪开始的横轴位置
* @param int $cropY 裁剪开始的纵轴位置
* @param int $cropWidth 裁剪的宽度
* @param int $cropHeight 裁剪的高度
* @param int $quality 图片质量(0-100,默认为75)
*
* @return bool 成功返回true,失败返回false
*/
function resizeAndCropImage($srcPath, $dstPath, $newWidth, $newHeight, $cropX, $cropY, $cropWidth, $cropHeight, $quality = 75) {
// 获取原始图片信息
$srcInfo = getimagesize($srcPath);
if (!$srcInfo) {
return false;
}
// 根据原始图片的mime类型创建相应的图片资源
switch ($srcInfo[2]) {
case IMAGETYPE_JPEG:
$srcImage = imagecreatefromjpeg($srcPath);
break;
case IMAGETYPE_PNG:
$srcImage = imagecreatefrompng($srcPath);
break;
case IMAGETYPE_GIF:
$srcImage = imagecreatefromgif($srcPath);
break;
default:
return false;
}
// 创建缩放后的空白图片资源
$dstImage = imagecreatetruecolor($newWidth, $newHeight);
// 将原始图片的内容复制到缩放后的图片上,进行缩放
imagecopyresampled($dstImage, $srcImage, 0, 0, 0, 0, $newWidth, $newHeight, $srcInfo[0], $srcInfo[1]);
// 创建要裁剪的空白图片资源
$cropImage = imagecreatetruecolor($cropWidth, $cropHeight);
// 将缩放后的图片的内容复制到要裁剪的图片上,进行裁剪
imagecopy($cropImage, $dstImage, 0, 0, $cropX, $cropY, $cropWidth, $cropHeight);
// 保存裁剪后的图片
switch ($srcInfo[2]) {
case IMAGETYPE_JPEG:
imagejpeg($cropImage, $dstPath, $quality);
break;
case IMAGETYPE_PNG:
imagepng($cropImage, $dstPath, $quality / 100 * 9);
break;
case IMAGETYPE_GIF:
imagegif($cropImage, $dstPath);
break;
default:
return false;
}
// 释放所占用的内存
imagedestroy($srcImage);
imagedestroy($dstImage);
imagedestroy($cropImage);
return true;
}
// 使用示例:将原始图片缩放到100x100尺寸,并将裁剪后的图片保存为output.jpg
resizeAndCropImage('input.jpg', 'output.jpg', 100, 100, 0, 0, 100, 100);
以上代码通过 resizeAndCropImage 函数实现图片的缩放与裁剪,函数的参数分别为原始图片路径、缩放与裁剪后的图片保存路径、缩放后的图片宽高、裁剪的位置与尺寸、图片质量。
函数中首先获取原始图片的信息,然后根据图片的mime类型创建相应的图片资源。接着创建缩放后的图片的资源,并使用 imagecopyresampled 函数将原始图片的内容复制到缩放后的图片上进行缩放。
然后创建要裁剪的图片的资源,并使用 imagecopy 函数将缩放后的图片的内容复制到要裁剪的图片上进行裁剪。
最后根据图片的mime类型将裁剪后的图片保存到指定的路径,并释放所占用的内存空间。
使用示例中将原始图片缩放到100x100尺寸,并将裁剪后的图片保存为output.jpg。
