PHP实现将图片或头像转换为圆形(类似微信头像)

  •   
  • 6217
  • PHP
  • 0
  • super_dodo
  • 2019/07/03

在生成带头像的二维码的时候,用户的头像是正方形的,这个时候希望把头像生成圆形的,所以需要对头像进行相应的处理,把图片转换为圆形。下面是一个网上的案例,仅供参考。

circular_img

/**
* 将图片转为圆形
* @param [string] $img 原始图片地址
* @param [string] $save_img 生成后的圆形图片存储路径
*/
function circular_img($img,$save_img){
$ext=pathinfo($img);
$src_img = null;
switch ($ext['extension']) {
case 'jpg':
$src_img=imagecreatefromjpeg($img);
break;
case 'png':
$src_img=imagecreatefrompng($img);
break;
}
$wh= getimagesize($img);
$w=$wh[0];
$h=$wh[1];
$w=min($w,$h);
$h= $w;
$img = imagecreatetruecolor($w, $h);
//这一句一定要有
imagesavealpha($img, true);
//拾取一个完全透明的颜色,最后一个参数127为全透明,并可以设定背景色
$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
imagefill($img, 0, 0, $bg);
$r = $w / 2; //圆半径
$y_x = $r; //圆心X坐标
$y_y = $r; //圆心Y坐标
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); } } } imagejpeg ($img,$save_img,90); imagedestroy($img); return true; } $oldImg = './img/old.png'; //原来的图片 $newImg = './img/new.png'; //生成的图片 $res = circular_img($oldImg, $newImg); var_dump($res); [/php] #参考网址: #https://www.cnblogs.com/xuweiqiang/p/9956498.html

人的运气是可以调整的~比如通过感恩和微笑~记得每天心怀感恩和保持微笑