最近做小程序生成海报需要把用户的头像展示出来,从微信获取的头像默认是正方形的,不是很美观。
需要把图片处理成圆形的,用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 < $w; $x++) { for ($y = 0; $y < $h; $y++) { $rgbColor = imagecolorat($src_img, $x, $y); if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r)) < ($r * $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将图片将切成圆角 》