(头像处理)PHP把图片转换成圆形png

2019-5-31 hubo php开发

/* 
 * @fun 图片转换成圆形png,传入源路径和转换后的路径,均用相对于当前程序文件的路径
 * @memo 对于非正方形的图片,以短边作为图片的直径
 * @param string $src 源路径
 * @param string $dst 转换后的路径
 * @return void
 * @call z_image2circle("circleimage.jpg", './circleimage-'.uniqid().'.png');

 */



function z_image2circle($src, $dst){

    //获取原图尺寸,并设置新图片的宽度和高度
    list($w, $h) = getimagesize($src); 
    if( $w > $h ){
        $w = $h;
    }else{
        $h = $w;
    }
    
    $oimgSrc = imagecreatefromstring(file_get_contents($src));
    $oimgDst = imagecreatetruecolor($w, $h);
    imagealphablending($oimgDst,false);
    $transparent = imagecolorallocatealpha($oimgDst, 0, 0, 0, 127);
    $r=$w/2;
    for($x=0;$x<$w;$x++){
        for($y=0;$y<$h;$y++){  
            $c = imagecolorat($oimgSrc,$x,$y);
            $_x = $x - $w/2;
            $_y = $y - $h/2;
            if((($_x*$_x) + ($_y*$_y)) < ($r*$r)){  
                imagesetpixel($oimgDst,$x,$y,$c);
            }else{  
                imagesetpixel($oimgDst,$x,$y,$transparent);
            }
        }
    }
    imagesavealpha($oimgDst, true);
    imagepng($oimgDst, $dst);
    imagedestroy($oimgDst);
    imagedestroy($oimgSrc);
}

网站备案号:京ICP备11043289号-1 北京市公安局网络备案 海1101084571
版权所有 北京育灵童科技发展有限公司 Copyright © 2002-2024 www.elight.cn, All Rights Reserved