实例说明
图片裁剪是指在一个大的背景图片中剪切出一张指定区域的图片,常见的应用是在用户设置个人头像时,可以从上传的图片中裁剪出一个合适的区域作为自己的个人头像图片。
实现代码
图片裁剪和图片缩放的原理相似,所以也是借助 imagecopyresampled ()函数去实现这个功能。同样也是以JPEG图片格式为例,声明一个图像裁剪函数cut_img(), 代码如下所示:
<?php
/**
* 裁剪图片
* @param $tring $filename 要裁剪图片路径
* @param string $newname 新图片名
* @param int $x 裁剪图片左边开始位置
* @param int $y 裁剪图片顶部开始位置
* @param int $width 图片裁剪的宽度
* @param int $height 图片裁剪的高度
*/
function cut_img($filename,$newname='',$x,$y,$width,$height){
// 获取背景图片资源
$img_back = imagecreatefromjpeg($filename);
// 创建一个保存裁剪后图片的资源
$cut_img = imagecreatetruecolor($width, $height);
// 裁剪图片
imagecopyresampled($cut_img, $img_back, 0, 0, $x, $y, $width, $height, $width, $height);
// 保存裁剪后图片。若不覆盖原图,可以加前缀
imagejpeg($cut_img,$newname.$filename);
}
// 调用函数
cut_img('c.jpg','new',100,100,200,200);
在上面声明的图片裁剪函数 cut_img () 中,可以从第一个参数$filename 传入的图片上,左部以第二个参数
x
和
顶
部
以
第
三
个
参
数
x 和顶部以第三个参数
x和顶部以第三个参数y 位置开始,裁剪出大小通过第四个参数
w
i
d
t
h
指
定
的
宽
度
和
第
五
个
参
数
width 指定的宽度和第五个参数
width指定的宽度和第五个参数height 指定的高度图片。
上例在图片 c.jpg中,左部和顶部都是从100像素位置开始,裁剪出宽度和高度都是200像素的图片。效果如下:
原图 c.jpg
裁剪后图 newc.jpg