php实现自定义中间logo的微信小程序码这里写自定义目录标题

小程序码生成的时候是默认使用小程序后台设置的小程序icon图片的,但是在有些场景我们可能要替换成我们自己想要的icon。
下面先放代码:

public function makeNewQrCodeAction()
{//获取用户头像并转string$avatarUrl = $this->_req->getQuery('avatarUrl', "");// if (!$avatarUrl) {// response::err_lack_param();//}if (!$avatarUrl) {$avatarUrl = file_get_content(APP_PATH . "/public/imgs/default.png"); //这边如果微信用户 没有设置头像,给一个默认的头像,不然得到的二维码是空白图。}$avatar_file = file_get_contents($avatarUrl);$logo = $this->changeAvatar($avatar_file);//获取小程序码$data['scene'] = $this->_req->getQuery('code', 1); $data['width'] = (int)$this->_req->getQuery('width', 280);$data['auto_color'] = $this->_req->getQuery('auto_color');$data['line_color'] = $this->_req->getQuery('line_color');   //看了很多人说设置线条颜色失败,我也尝试了下,发现失败可能存在这两个原因其一:1、没有设置auto_color的值为true;2、设置的颜色微信还不支持。我尝试的rgb(255,0,0)是可以的,但是rgb(0,255,0)就不支持了。所以遇到设置线条颜色无效的可以先设置rgb(255,0,0)看看先$data['is_hyaline'] = $this->_req->getQuery('is_hyaline');  //设置二维码底色是否透明,默认false$data['page'] = $this->_req->getQuery('path');$wxModel = new \Hd\WxAuthModel();$Qr_code = $wxModel->getShareCode($data);  //生成小程序码接口//        file_put_contents('/tmp/tmp_qr.png',$Qr_code); exit; //这里先看一下生成的小程序码是否是自己设置的格式//小程序码与头像进行拼接$url = $this->makeOnePic($Qr_code, $logo); response::result($url);}private function  makeOnePic($qr_code, $logo)  //二维码与头像组合{$qr_code = imagecreatefromstring($qr_code);  //生成的二维码底色为白色//设置二维码为透明底imagesavealpha($qr_code, true);  //这个设置一定要加上$bg = imagecolorallocatealpha($qr_code, 255, 255, 255, 127);   //拾取一个完全透明的颜色,最后一个参数127为全透明imagefill($qr_code, 0, 0, $bg);$icon = imagecreatefromstring($logo);  //生成中间圆形logo (微信头像获取到的logo的大小为132px 132px)$qr_width = imagesx($qr_code);  //二维码图片宽度
//        $qr_height = imagesy($qr_code);  //二维码图片高度$lg_width = imagesx($icon);  //logo图片宽度$lg_height = imagesy($icon);  //logo图片高度//        var_dump($qr_width,$qr_height);
//        var_dump($lg_width,$lg_height);$qr_lg_width = $qr_width / 2.2;$scale = $lg_width / $qr_lg_width;$qr_lg_height = $lg_height / $scale;$start_width = ($qr_width - $lg_width) / 2 + 2;  //(获取logo的左上方的位置:( 外部的正方形-logo的宽 ) / 2,我这边存在1px的偏差 我就给+2啦)
//        var_dump($scale,$qr_lg_height);
//        var_dump($start_width);imagecopyresampled($qr_code, $icon, $start_width, $start_width, 0, 0, $qr_lg_width, $qr_lg_height, $lg_width, $lg_height);//传回处理好的图片url
//        $qrcode = "/imgs/qrCode" . time() . ".png";//        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
//        $tmp_url = $protocol . $_SERVER['HTTP_HOST'] . $qrcode;  //LCT这个需上线后除去
//        response::result($tmp_url);imagepng($qr_code); //保存imagedestroy($qr_code);imagedestroy($icon);exit;}private function changeAvatar($avatar)  { //处理用户头像为圆形icon$avatar = imagecreatefromstring($avatar);$w = imagesx($avatar);$h = imagesy($avatar);$w = min($w, $h);$h = $w;$img = imagecreatetruecolor($w, $h);imagesavealpha($img, true);$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($avatar, $x, $y);if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r)) < ($r * $r))) {imagesetpixel($img, $x, $y, $rgbColor);}}}ob_start();  imagepng($img);imagedestroy($img);imagedestroy($avatar);$contents = ob_get_contents();  、、读取缓存区的内容ob_end_clean();  //清空缓存区return $contents;}public function getShareCode($data)  //生成小程序码{$access_token = $this->getAccessToken();  //获取access_token这个要设置token缓存,具体可以查看我的另一篇文章$res_url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=$access_token";header('content-type:image/png');$data = json_encode($data);$Qr_code = $this->http_request($res_url, $data);return $Qr_code;}

php实现自定义中间logo的微信小程序码相关推荐

  1. 获取微信小程序码传递的参数 / 微信开发者工具模拟扫描小程序码调试

    本文主要介绍如何在微信开发者工具中,模拟微信扫描小程序码打开小程序的场景,进行调试. 二维码调试可以看这篇文章:微信开发者工具模拟扫描二维码调试 添加编译模式 添加一个咱们自定义的编译模式 输入模式名 ...

  2. 关于.NET HttpClient方式获取微信小程序码(二维码

    随着微信小程序的火热应用,市面上有关小程序开发的需求也多了起来.近来分析了一项生成有关生成微信小程序码的需求--要求扫码跳转到小程序指定页面(带参数):看了下小程序官方文档,以及网上的例子,未看到多少 ...

  3. 关于获取微信小程序码的“47001”错误码的坑

    最近在项目组用Java写了一条获取微信小程序码的api,根据微信的接口文档进行一步一步的操作,可就是按照微信的接口文档一步一步来,微信给我返回的结果一直都是47001. {"errcode& ...

  4. 安卓自定义时间选择器_微信小程序拾色器(颜色选择器)组件

    点击上方"极客小寨",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 大家好,我是独立开发者东东,如今在web项目中不少地方需要用到颜色选择器,比如设置 ...

  5. C# 更换微信小程序码中间的logo图层

    /// <summary>         /// 更换小程序码中间的logo         /// </summary>         /// <param nam ...

  6. 微信小程序码中间Logo修改

    步骤: 1.用微信小程序提供的接口获取小程序码 appId, secret->access_token access_token->二维码(https://developers.weixi ...

  7. java实现用用户头像代替小程序码的logo(任意图片替换小程序码logo)

    由于个人水平有限,实在是不能保证代码的严谨性,我只能说是可以实现功能,用来个性化小程序码logo //生成文件名称,这个不是必须的,可以根据自己的业务逻辑来写 Random random = new ...

  8. 微信小程序码:不要方,就爱圆

    4月18日夜间,小程序专用码发布,小程序开发者登录微信公众账号平台的后台,就可以自动生成这个专属图形. 这个小程序码和正常的二维码相同,但仅供升级到6.5.7最新版本微信的用户扫描识别,进入相应的小程 ...

  9. 微信小程序码buffer转为图片php,微信小程序将网络图片转成base64数据

    微信开发中图片上传是很常见的功能点之一,那么如果需要我们将网络图片转换成所需要的base64数据格式,微信小程序中我们要如何实现呢? 效果如图: 需要获取网络数据,我们需要先了解微信api中的wx.r ...

最新文章

  1. HarmonyOS 点击事件的实现
  2. cvs数据导入工具 oracle_为中国企业打造的研发项目管理工具ONES Project已支持Jira数据导入...
  3. 静态工具类注入service的方法
  4. 哈罗单车怎么关锁还车_记者体验临沂共享单车定点还车 停错地方关不上锁
  5. 华院数据宣晓华:传统零售商转型电商需攻克大数据三关
  6. linux sed面试题,【2021最新版】Linux面试题总结(48道题含答案解析)
  7. nginx+php配置
  8. C语言程序设计基础笔记
  9. 内网渗透-信息收集整合
  10. 农历中的 闰月 与 公历中的 闰日
  11. 质量管理8D报告详解,附报告模板
  12. [除一波线段树和平衡树的草]
  13. sugon服务器型号从哪看,sugon服务器初始密码
  14. golang做php的中间件,Golang 之 中间件
  15. 手机连不上电脑WIFI并且一直提示正在获取IP地址
  16. 使用Arduino和DS12C887芯片制作电子时钟(附Arduino源代码)
  17. 会导致电脑蓝屏的wav文件原因未知 log whea logger 17 realtek alc269系统播放音频崩溃
  18. JWT最全知识点-动力节点
  19. 格雷通路 算法 java,Java算法与数据结构教程
  20. Java面试题(外包公司)

热门文章

  1. LeetCode:183.Customers Who Never Order
  2. 【笔记】笔记本查看电池损耗,一句命令搞定!(附笔记本电池使用技巧)
  3. Photoshop | 快速抠头发(调整边缘/选择并遮住)
  4. 源码分析RocketMQ顺序消息消费实现原理
  5. 冬天别忘晒太阳[整理]
  6. 《软技能·代码之外的生存指南》读书笔记 ——自我营销
  7. 使用 Certbot 自动申请并续订阿里云 DNS 免费泛域名证书
  8. ctfshow XXE web373-web378 wp
  9. 奇数值结点链表(C语言实现)
  10. Acrobat如何将word文件转换成pdf格式