php把图片转成圆形

public function circularImg($img, $savPath, $w = 0)
{
    $src = imagecreatefromstring(file_get_contents($img)); //获取网络资源文件
    if ($w == 0) {
        $wh = getimagesize($img);
        $w = $wh[0];
        $h = $wh[0];
        $w = min($w, $h);
    }
    $h = $w;

    $newpic = imagecreatetruecolor($w, $h);

    imagealphablending($newpic, false); //设定图像的混色模式

    $transparent = imagecolorallocatealpha($newpic, 255, 255, 255, 127);//边缘透明

    $r = $w / 2;
    for ($x = 0; $x < $w; $x++)
        for ($y = 0; $y < $h; $y++) {
            $c = imagecolorat($src, $x, $y);
            $_x = $x - $w / 2;
            $_y = $y - $h / 2;
            if ((($_x * $_x) + ($_y * $_y)) < ($r * $r)) {
                imagesetpixel($newpic, $x, $y, $c);
            } else {
                imagesetpixel($newpic, $x, $y, $transparent);
                //imagesetpixel() 在 image 图像中用 color 颜色在 x,y 坐标(图像左上角为 0,0)上画一个点。
            }
        }

    imagesavealpha($newpic, true);

    imagepng($newpic, $savPath);
    imagedestroy($newpic);
    imagedestroy($src);

    return $savPath;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值