前阵子有需求做生成海报,海报需要有用户头像昵称,头像是方的,但是老板要求头像改成圆的,倒腾了好一阵让我找到这个方法,记录一下
public function test($url,$path='upload/images/'){
$w = 132; $h=132; // original size 微信默认头像大小 高132,宽132
$original_path= $url; //头像地址
$dest_path = $path.uniqid().'.png';
//创建目录
if(!file_exists($path))
{
mkdir($path,0777,true);
}
$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);
return $dest_path;
}