最近做小程序生成海报需要把用户的头像展示出来,从微信获取的头像默认是正方形的,不是很美观。
需要把图片处理成圆形的,用PHP很好实现:/**
* 将图片切成圆角
* @param string $imgpath 本地磁盘图像路径
* @return file 图像流
*/
public function yuanjiao($imgpath){
$ext = pathinfo($imgpath);
$src_img = null;
switch ($ext['extension']) {
case 'jpg':
$src_img = imagecreatefromjpeg($imgpath);
break;
case 'png':
$src_img = imagecreatefrompng($imgpath);
break;
}
list($w,$h) = getimagesize($imgpath);
$w = min($w, $h);
$h = $w;
$img = imagecreatetruecolor($w,$h);
imagesavealpha($img, true);//这一句一定要有
//拾取一个完全透明的颜色,最后一个参数127为全透明
$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
imagefill($img, 0, 0, $bg);
$r = $w / 2; //圆半径
$y_x = $r; //圆心X坐标
$y_y = $r; //圆心Y坐标
for ($x = 0; $x
for ($y = 0; $y
$rgbColor = imagecolorat($src_img, $x, $y);
if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r))
imagesetpixel($img, $x, $y, $rgbColor);
}
}
}
return $img;
}
传入本地图像路径,返回的结果可直接用于GD图像二次处理。
如需要保存处理后的图像:$img = 'D:/php/images/test.jpg';//原图像
$save_img = 'D:/php/images/1.jpg';//处理后的图像
$headimg_source = self::yuanjiao($img);
imagejpeg($headimg_source,$save_img);
imagedestroy($headimg_source);
处理后的
转载请注明本文标题和链接:《 PHP将图片将切成圆角 》