Thinkphp 生成海报和小程序二维码

1.获取小程序二维码

2.改变图片大小

3.图片改为圆图

4.图片去四角边

5.生成海报

如果有帮到的可以点个赞

1.获取小程序二维码

    $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . config('AppID') . '&secret=' . config('AppleSecret');
    $res = file_get_contents($url);
    $token = json_decode($res, true)['access_token'];
    $URL = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' . $token;
    $data = [
        'scene' => $scene, //二维码传入参数
        'page' => $page_url, //扫码后进入页面
    ];
    $json = json_encode($data); //数组加密                                
    $result = api_notice_increment($URL, $json);    //用CURL 进行POST请求

    $path = ROOT_PATH . 'public/upload/extend/qrcode/original'; //ROOT_PATH 我使用的是TP5框架
    if (!file_exists($path)) { //判断目录是否存在
        mkdir($path, 0777, true);
    }
    $path = $path . '/' . $file_name . '.png'; //最后要写入的目录及文件名
    if (!file_exists($path)) {
        //  创建将数据流文件写入我们创建的文件内容中
        file_put_contents($path, $result);
    }
    header('Content-Type: image/jpeg');
    //返回小程序二维码
    return request()->domain() . '/upload/extend/qrcode/original/' . $file_name . '.png';

效果图

2.改变图片大小

    //改变图片大小
    $cover_url='/upload/picture/20211028/thumb/medium_2ee991169473f8bcc0748be2c6592c7a.jpg'
    $cover_image = \think\Image::open('./' . $cover_url);
    $cover_url = ROOT_PATH . 'public/upload/extend/qrcode/cover1/'; //生成新的文件
    if (!file_exists($cover_url)) { //判断目录是否存在
          mkdir($cover_url, 0777, true);
       }
    $cover_urls = $cover_url . $file_name . '.png'; //最后要写入的目录及文件名
        if (!file_exists($cover_urls)) {
             //参数1数字宽带 参数2数字高度 
             $cover_image->thumb(340, 280, \think\Image::THUMB_CENTER)->save($cover_urls);
         }
     //获取结果图
     $h_result['result_cover_url'] = './upload/extend/qrcode/cover1/' . $file_name . '.png';

 

3.图片改为圆图

     //原图     TP获取当前域名
    $page_url = request()->domain() . '/upload/extend/qrcode/thumbnail/' . $file_name . '.png';
    $path = ROOT_PATH . 'public/upload/extend/qrcode/circular/'; //生成新文件存储图片
    $paths = $path  . $file_name . '.png'; //最后要写入的目录及文件名

    if (!file_exists($path)) { //判断目录是否存在
        mkdir($path, 0777, true);
    }
    if (!file_exists($paths)) {
        $avatar = file_get_contents($page_url);
        $result = yuanImg($avatar);
        //  创建将数据流文件写入我们创建的文件内容中
        file_put_contents($paths, $result);
    }
    return './upload/extend/qrcode/circular/' . $file_name . '.png';

效果图

 

3.图片去四角边

 //目标图路径
 $result_cover_url = './upload/extend/qrcode/cover3/' . $file_name . '.png'; 

 $circular_url = ROOT_PATH . 'public/upload/extend/qrcode/circular2/'; //目标位置
 if (!file_exists($circular_url)) { //判断目录是否存在
      mkdir($circular_url, 0777, true);
     }
 $result_circular_urls = $circular_url . $file_name . '.png'; //最后要写入的目录及文件名
 $radius = 15; 
 $src_img = null;
 $src_img = imagecreatefromjpeg($result_cover_url );
 $wh = getimagesize($result_cover_url );
 $w = $wh[0];
 $h = $wh[1];
 $img = imagecreatetruecolor($w, $h);
 //这一句一定要有
 imagesavealpha($img, true);
 //拾取一个完全透明的颜色,最后一个参数127为全透明
 $bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
 imagefill($img, 0, 0, $bg);
 $r = $radius; //圆 角半径
 for ($x = 0; $x < $w; $x++) {
  for ($y = 0; $y < $h; $y++) {
 $rgbColor = imagecolorat($src_img, $x, $y);
 if (($x >= $radius && $x <= ($w - $radius)) || ($y >= $radius && $y <= ($h - $radius))) 
   {
   //不在四角的范围内,直接画
     imagesetpixel($img, $x, $y, $rgbColor);
   } else {
   //在四角的范围内选择画
   //上左
     $y_x = $r; //圆心X坐标
     $y_y = $r; //圆心Y坐标
 if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
     imagesetpixel($img, $x, $y, $rgbColor);
   }
  //上右
    $y_x = $w - $r; //圆心X坐标
    $y_y = $r; //圆心Y坐标
  if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
     imagesetpixel($img, $x, $y, $rgbColor);
  }
  //下左
    $y_x = $r; //圆心X坐标
    $y_y = $h - $r; //圆心Y坐标
  if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
     imagesetpixel($img, $x, $y, $rgbColor);
  }
  //下右
    $y_x = $w - $r; //圆心X坐标
    $y_y = $h - $r; //圆心Y坐标
  if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
     imagesetpixel($img, $x, $y, $rgbColor);
   }
  }
 }
}
imagepng($img, $result_circular_urls);
imagedestroy($img);
return './upload/extend/qrcode/circular3/' . $file_name . '.png';

 效果图

5.生成海报

        //背景图
        $share_img = ROOT_PATH . 'public/upload/extend/qrcode/graph/poster2.png';
        $image = \think\Image::open($share_img);
        //新图地址
        $new_url = ROOT_PATH . 'public/upload/extend/qrcode/result2/'; //ROOT_PATH 我使用的是TP5框架
        if (!file_exists($new_url)) { //判断目录是否存在
            mkdir($new_url, 0777, true);
        }
        //查看文件是否存在
        $all_url = $new_url . $file_name . '.png'; //最后要写入的目录及文件名
        try {
            //水印
            $image->water($thumbnail_picture, [565, 1365])->save($all_url);
            //房间图
            $image->water($h_result['result_cover_url'], [27, 680])->save($all_url);
            //字体,这个每台电脑都有自己找找
            $font = ROOT_PATH . 'public/upload/size/SOURCEHANSANSSC.OTF';
            //项目
            $image->text($h_result['mall_department_has_one']['name'], $font, 28, '#ffffff', [64,1180], 0, 0)->save($all_url);
            //面积
            if(strlen($h_result['square']) == 1){
                $image->text($h_result['square'].'m²', $font, 30, '#ffffff', [338,1180], 0, 0)->save($all_url);
            }elseif(strlen($h_result['square']) == 2){
                $image->text($h_result['square'].'m²', $font, 30, '#ffffff', [328,1180], 0, 0)->save($all_url);
            }elseif (strlen($h_result['square']) == 3){
                $image->text($h_result['square'].'m²', $font, 30, '#ffffff', [315,1180], 0, 0)->save($all_url);
            }
            //金额
            $image->text('¥'.$h_result['price'], $font, 30, '#ffffff', [530,1180], 0, 0)->save($all_url);
//            //经纪人
            $image->text($s_result['name'], $font, 25, '#ffffff', [232,1360], 0, 0)->save($all_url);
            //联系方式
            $image->text($s_result['phone'], $font, 24, '#ffffff', [232,1420], 0, 0)->save($all_url);
        } catch (\Exception $exception) {
            return false;
        }
        return request()->domain() . '/upload/extend/qrcode/result2/' . $file_name . '.png';

效果图

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值