您的位置:时间博客>PHP>PHP将图片将切成圆角

PHP将图片将切成圆角

最近做小程序生成海报需要把用户的头像展示出来,从微信获取的头像默认是正方形的,不是很美观。

需要把图片处理成圆形的,用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);


f950e16c5c280594e5eae51b57563d12.png 处理后的   3de8f449a581cfefa2426619c557c45c.png

转载请注明本文标题和链接:《 PHP将图片将切成圆角
分享到:

相关推荐

网友评论 0

未登陆 表情
Ctrl+Enter快速提交