* @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);

03-14 02:03