给图片添加圆角功能,可做圆形图片,保持透明
如果只想当成一个处理圆角的函数使用,请到文章下面的博客地址取单独的一个函数使用
附件里是 单个函数的使用示例
如下所示

把下面这个函数添加到类里面,为类的一个成员函数,
/**
* 处理圆角图片
* @param integer $radius 圆角半径长度默认为15,处理成圆型
* @return [type] [description]
*/
public function radius($radius = 15) {
// $wh = getimagesize($imgpath);
$w = $this->width();
$h = $this->height();
// $radius = $radius == 0 ? (min($w, $h) / 2) : $radius;
$img = imagecreatetruecolor($w, $h);
//这一句一定要有
imagesavealpha($img, true);
//拾取一个完全透明的颜色,最后一个参数127为全透明
$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
imagefill($img, 0, 0, $bg);
$r = $radius; //圆 角半径
for ($x = 0; $x < $w; $x++) {
for ($y = 0; $y < $h; $y++) {
$rgbColor = imagecolorat($this->im, $x, $y);
if (($x >= $radius && $x <= ($w - $radius)) || ($y >= $radius && $y <= ($h - $radius))) {
//不在四角的范围内,直接画
imagesetpixel($img, $x, $y, $rgbColor);
} else {
//在四角的范围内选择画
//上左
$y_x = $r; //圆心X坐标
$y_y = $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
continue;
}
//上右
$y_x = $w - $r; //圆心X坐标
$y_y = $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
continue;
}
//下左
$y_x = $r; //圆心X坐标
$y_y = $h - $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
continue;
}
//下右
$y_x = $w - $r; //圆心X坐标
$y_y = $h - $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
continue;
}
}
}
}
$this->im = $img;
return $this;
}
使用方法\think\Image::open('./1.jpg')->thumb(80, 80)->radius(20)->save('./2.jpg');
处理圆角的原理请参考博客地址http://www.zhaokeli.com/article/8031.html
原创发布,如果转截请声明文章来源博客地址