100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 利用php gd or Imagick库把图片裁剪成圆形

利用php gd or Imagick库把图片裁剪成圆形

时间:2019-09-25 11:24:37

相关推荐

利用php gd or Imagick库把图片裁剪成圆形

主要这两种方法,记录一下:

一、设置透明度

function test($url,$path='./'){$w = 110; $h=110; // original size $original_path= $url; $dest_path = $path.uniqid().'.png'; $src = imagecreatefromstring(file_get_contents($original_path)); $newpic = imagecreatetruecolor($w,$h); imagealphablending($newpic,false); $transparent = imagecolorallocatealpha($newpic, 0, 0, 0, 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); } } imagesavealpha($newpic, true); imagepng($newpic, $dest_path); imagedestroy($newpic); imagedestroy($src); // unlink($url); return $dest_path; }

二、利用Imagick

function getCircleAvatar($avatar, $circleAvatar, $r) {/*** @des画一个正方形* @size 两个半径*/$size = 2 * $r;$circle = new Imagick();$circle->newImage($size, $size, 'none');$circle->setimageformat('png');$circle->setimagematte(true);/*** @des在矩形上画一个白色圆*/$draw = new ImagickDraw();$draw->setfillcolor('#fff');$draw->circle($r, $r, $r, $size);$circle->drawimage($draw);/*** @des裁剪头像成圆形*/$imagick = new Imagick();$imagick->readImage($avatar);$imagick->setImageFormat('png');$imagick->setimagematte(true);$imagick->cropimage($size, $size, 0, 0); // 修改裁剪属性$imagick->compositeimage($circle, Imagick::COMPOSITE_COPYOPACITY , 0, 0);$imagick->writeImage($circleAvatar);$imagick->destroy();}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。