PHP生成圆心图片-常用作头像圆图等场景

用PHP的PG库把任意一张图片生成圆形或者椭圆形图片,function如下:

/**
 * 生成圆形图片
 * @param $imgpath  图片地址/支持微信、QQ头像等没有后缀的网络图
 * @param $saveName string 保存文件名,默认空。
 * @return resource 返回图片资源或保存文件
 */
function yuan_img($imgpath,$saveName = '') {
    $src_img = imagecreatefromstring(file_get_contents($imgpath));
    $w = imagesx($src_img);$h = imagesy($src_img);
    $w = $h = min($w, $h);

    $img = imagecreatetruecolor($w, $h);
    //这一句一定要有
    imagesavealpha($img, true);
    //拾取一个完全透明的颜色,最后一个参数127为全透明
    $bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
    imagefill($img, 0, 0, $bg);
    $r   = $w / 2; //圆半径
    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);
            }
        }
    }
    
    //返回资源
    if(!$saveName) return $img;

    //输出图片到文件
    imagepng ($img,$saveName);

    //释放空间
    imagedestroy($src_img);
    imagedestroy($img);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值