下面是“PHP自定义图片缩放函数实现等比例不失真缩放的方法”的完整攻略:
下面是“PHP自定义图片缩放函数实现等比例不失真缩放的方法”的完整攻略:
1. 要实现等比例不失真的缩放,需要使用到图像处理库gd库
gd库是一种图像处理函数库,提供了很多操作图像和其它类型文件的API。gd库需要在PHP环境中进行安装和配置,可在PHP.ini中开启相关gd库的扩展。
2. 基于gd库的缩放实现
gd库中提供了函数imagecopyresampled()用于对图像进行缩放处理。我们可以通过以下代码来使用gd库并进行图片缩放:
/**
* 缩放图片
*
* @param string $srcImg 待缩放的图片路径
* @param int $thumbWidth 缩放后图片的宽度
* @param int $thumbHeight 缩放后图片的高度
* @param string $thumbPath 缩放后的图片路径
* @return bool|string 是否成功缩放,成功返回缩放后的图片路径,失败返回false
*/
function resizeImage($srcImg, $thumbWidth, $thumbHeight, $thumbPath) {
list($width, $height, $cap) = getimagesize($srcImg);
$thumbImage = imagecreatetruecolor($thumbWidth, $thumbHeight);
if (!$thumbImage) {
return false;
}
$sourceImage = $this->createSrcImage($srcImg, $cap);
if (!$sourceImage) {
return false;
}
// 缩放图片
if (!imagecopyresampled($thumbImage, $sourceImage, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $width, $height)) {
return false;
}
// 保存缩放后的图片
$result = $this->saveThumbImage($thumbImage, $thumbPath);
if (!$result) {
return false;
}
// 释放资源
imagedestroy($sourceImage);
imagedestroy($thumbImage);
return $thumbPath;
}
/**
* 创建源图片资源
*
* @param string $path 图片路径
* @param int $type 图片类型
* @return bool|resource resource 或者 false
*/
function createSrcImage($path, $type) {
switch ($type) {
case 1:
$src = imagecreatefromgif($path);
break;
case 2:
$src = imagecreatefromjpeg($path);
break;
case 3:
$src = imagecreatefrompng($path);
break;
default:
$src = false;
break;
}
return $src;
}
/**
* 保存缩放后的图片
*
* @param resource $thumbImage 缩放后的图片资源
* @param string $thumbPath 缩放后的图片路径
* @return boolean 是否成功保存图片
*/
function saveThumbImage($thumbImage, $thumbPath) {
switch (pathinfo($thumbPath, PATHINFO_EXTENSION)) {
case 'gif':
$result = imagegif($thumbImage, $thumbPath);
break;
case 'jpg':
case 'jpeg':
$result = imagejpeg($thumbImage, $thumbPath);
break;
case 'png':
$result = imagepng($thumbImage, $thumbPath);
break;
default:
$result = false;
break;
}
return $result;
}
以上代码实现了图片的等比例缩放,并保证图片不失真。具体实现方法是:首先通过getimagesize()获取原图大小,再根据缩放后图像的大小调用imagecreatetruecolor()函数新建一个缩放后的图像资源,使用imagecopyresampled()函数将原图缩放并复制到新图中,最后通过判断后缀名调用相应函数保存缩放后的图像。
示例
示例1
$srcImg = 'path/to/image.jpg';
$thumbWidth = 200;
$thumbHeight = 200;
$thumbPath = 'path/to/thumb_image.jpg';
$result = resizeImage($srcImg, $thumbWidth, $thumbHeight, $thumbPath);
if ($result) {
echo '缩放成功,缩略图路径:' . $result;
} else {
echo '缩放失败';
}
示例2
$srcImg = 'path/to/image.png';
$thumbWidth = 100;
$thumbHeight = 100;
$thumbPath = 'path/to/thumb_image.png';
$result = resizeImage($srcImg, $thumbWidth, $thumbHeight, $thumbPath);
if ($result) {
echo '缩放成功,缩略图路径:' . $result;
} else {
echo '缩放失败';
}
以上就是"PHP自定义图片缩放函数实现等比例不失真缩放的方法"的完整攻略和示例。
沃梦达教程
本文标题为:PHP自定义图片缩放函数实现等比例不失真缩放的方法
基础教程推荐
猜你喜欢
- PHP实现本地图片转base64格式并上传 2023-04-20
- smarty模板数学运算示例 2024-04-17
- laravel-admin利用ModelTree实现对分类信息的管理 2023-03-19
- PHPstorm激活码2020年5月13日亲测有效 2023-05-02
- 编写PHP程序检查字符串中的中文字符个数的实例分享 2024-03-30
- PHP chunk_split()函数讲解 2022-12-15
- PHP 数组基本操作小结(推荐) 2024-01-18
- PHP中常见的密码处理方式和建议总结 2022-11-23
- php遇到错误Call to undefined function ImageCreate()解决方 2022-09-02
- php 实现svg转化png格式的方法分析 2023-03-19