PHP如何将头像图片转换圆形图片

2022-07-22   阅读:533   分类:后端    标签: PHP

前景说明:有时候我们获取的微信头像是方形的,我们想把他弄成圆形的,我们可以通过PHP来实现,当然也可以同前端JavaScript来实现。

1、转换圆形图片方法:

 /*
   * @fun 图片转换成圆形png,传入源路径和转换后的路径,均用相对于当前程序文件的路径
   * @memo 对于非正方形的图片,以短边作为图片的直径
   * @param string $src 源路径
   * @param string $dst 转换后的路径
   */
  public function yuan_img($src) {
    //获取原图尺寸,并设置新图片的宽度和高度
    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);
        }
      }
    }
    $str = uniqid(mt_rand(),1);
    $file='/upload/ai/code/user/wx_tx/'.date('Ymd',time()).'/';
    $file2=$_SERVER['DOCUMENT_ROOT'].$file;
    if(!is_dir($file2))//检测目录是否存在
    {
      mkdir($file2,0777,true);
    }
    imagesavealpha($oimgDst, true);
    imagepng($oimgDst, $file2.md5($str).'.png');
    imagedestroy($oimgDst);
    imagedestroy($oimgSrc);
     return $file.md5($str).'.png';
  }

2、使用方法:

$this->yuan_img($res['avatar']))

注意:这里图片一定要真实项目图片

【腾讯云】预热专享1888元早鸟券一键领取,云服务器等爆品抢先购低至4.2元/月

‘简忆博客’微信公众号 扫码关注‘简忆博客’微信公众号,获取最新文章动态
转载:请说明文章出处“来源简忆博客”。http://www.tpxhm.com/adetail/913.html

×
觉得文章有用就打赏一下文章作者
微信扫一扫打赏 微信扫一扫打赏
支付宝扫一扫打赏 支付宝扫一扫打赏

文章评论(0)

登录
简忆博客壁纸 头像

简忆博客
勤于学习,乐于分享。

置顶推荐

打赏本站

如果你觉得本站很棒,可以通过扫码支付打赏哦!
微信扫码:你说多少就多少~
微信扫码
支付宝扫码:你说多少就多少~
支付宝扫码
×