Tp5生成带头像二维码海报(带文字描述,居中调整)

三张海报中随机生成一张展现

 /*** 获取随机海报* Author: yanjie   <823986855@qq.com>* Date: 2018/9/12 0012*/public function getPoster(){$id=input('ids')? input('ids') : '';$nickname = session('user.names');//微信昵称if(session('user_dossier.cur_job')==''){$curjob ='--';}else{$curjob = msubstr(session('user_dossier.cur_job')."·".session('user_dossier.cur_corp'),0,22);//职位}$invurl = cmf_get_domain() . cmf_url('wx/register/index') . "?invcode=".cmf_get_current_user_id(); //邀请链接$erweimaurl=PLUGINS_PATH.'..'.$this->QRcode($invurl); //生成二维码$url=session('user.avatar');if(preg_match('/^http(s)?:\\/\\/.+/',$url)){$logo = session('user.avatar');//微信头像}else{$logo = PLUGINS_PATH.'../upload/'.session('user.avatar');//微信头像if(!is_file($logo)){$logo = '/public/assets/images/people.png';//微信头像}}$logo=$this->resize_img($logo);$logo=$this->yuan_img($logo);if($id==''){$choose=rand(1,3);}elseif($id==1){$choose=2;}elseif($id==2){$choose=3;}elseif($id==3){$choose=1;}if($choose==1){$name=['name'=>$nickname,     //名字'size'=>'14',     //大小磅'namey'=>'139'    //y轴坐标];$job=['name'=>$curjob,     //名字'size'=>'10',     //大小磅'joby'=>'166'    //y轴坐标];$logourl=['url'=>$logo,     //名字'logox'=>'161',     //x轴坐标'logoy'=>'34',    //y轴坐标'width'=>'76',    //宽'height'=>'76',    //高];$qrcodeurl=['url'=>$erweimaurl,     //名字'qrx'=>'150',     //x轴坐标'qry'=>'406',    //y轴坐标'width'=>'99',    //宽'height'=>'99',    //高];$beijing = '/public/assets/images/poster1.png';//海报最底层得背景}elseif($choose==2){$name=['name'=>$nickname,     //名字'size'=>'14',     //大小磅'namey'=>'335'    //y轴坐标];$job=['name'=>$curjob,     //名字'size'=>'10',     //大小磅'joby'=>'362'    //y轴坐标];$logourl=['url'=>$logo,     //名字'logox'=>'161',     //x轴坐标'logoy'=>'230',    //y轴坐标'width'=>'76',    //宽'height'=>'76',    //高];$qrcodeurl=['url'=>$erweimaurl,     //名字'qrx'=>'150',     //x轴坐标'qry'=>'434',    //y轴坐标'width'=>'99',    //宽'height'=>'99',    //高];$beijing = '/public/assets/images/poster2.png';//海报最底层得背景}else{$name=['name'=>$nickname,     //名字'size'=>'14',     //大小磅'namey'=>'391'    //y轴坐标];$job=['name'=>$curjob,     //名字'size'=>'10',     //大小磅'joby'=>'418'    //y轴坐标];$logourl=['url'=>$logo,     //名字'logox'=>'161',     //x轴坐标'logoy'=>'285',    //y轴坐标'width'=>'76',    //宽'height'=>'76',    //高];$qrcodeurl=['url'=>$erweimaurl,     //名字'qrx'=>'290',     //x轴坐标'qry'=>'459',    //y轴坐标'width'=>'99',    //宽'height'=>'99',    //高];$beijing = '/public/assets/images/poster3.png';//海报最底层得背景}$url=$this->poster($name,$job,$logourl,$qrcodeurl,$beijing);return ['code'=>1,'ids'=>$choose,'url'=>$url];}/*** 合成海报* Author: yanjie   <823986855@qq.com>* Date: 2018/9/12 0012*/public function poster($name,$job,$logourl,$qrcodeurl,$beijing){
//        header("content-type: image/png");//如果要看报什么错,可以先注释调这个header$beijing = imagecreatefrompng($beijing);$avator = imagecreatefrompng($logourl['url']);$erweimaurl = imagecreatefrompng($qrcodeurl['url']);$image_3 = imageCreatetruecolor(imagesx($beijing),imagesy($beijing));$color = imagecolorallocate($image_3, 255, 255, 255);imagefill($image_3, 0, 0, $color);
//        imageColorTransparent($image_3, $color);  //透明imagecopyresampled($image_3,$beijing,0,0,0,0,imagesx($beijing),imagesy($beijing),imagesx($beijing),          imagesy($beijing));//字体颜色$white = imagecolorallocate($image_3, 111, 255, 255);$rqys = imagecolorallocate($image_3, 51, 51, 51); //#333333$black = imagecolorallocate($image_3,0,0,0);$font = PLUGINS_PATH."../public/assets/font/msyh.ttf";  //写的文字用到的字体。字体最好用系统有得
//      imagettftext设置生成图片的文本//名称显示$nameBox=imagettfbbox(14, 0, $font, $name['name']); //磅$namewith=abs($nameBox[2]-$nameBox[0]);$namex=abs((imagesx($beijing)-$namewith)/2);//职位居中显示$fontBox=imagettfbbox(10, 0, $font, $job['name']); //磅$fontwith=abs($fontBox[2]-$fontBox[0]);$jobx=abs((imagesx($beijing)-$fontwith)/2);imagettftext($image_3,$name['size'],0,$namex,$name['namey'],$rqys,$font,$name['name']); //磅imagettftext($image_3,$job['size'],0,$jobx,$job['joby'],$rqys,$font,$job['name']);imagecopymerge($image_3,$avator, $logourl['logox'],$logourl['logoy'],0,0,$logourl['width'],$logourl['height'],100);//左,上,右,下,宽度,高度,透明度imagecopymerge($image_3,$erweimaurl, $qrcodeurl['qrx'],$qrcodeurl['qry'],0,0,$qrcodeurl['width'],$qrcodeurl['height'], 100);//生成图片//imagepng($image_3);//在浏览器上显示clearstatcache(); //清除缓存is_file$fileurl="./upload/posters/100000".session('user.id').".png";$showurl="/upload/posters/100000".session('user.id').".png";imagepng($image_3,$fileurl);//保存到本地imagedestroy($image_3);return $showurl;}//二维码生成public function QRcode($data) {$url = urldecode($data);$fileurl="./upload/posters/100000".session('user.id')."qr.png";$showurl="/upload/posters/100000".session('user.id')."qr.png";QRcode::png($url, $fileurl, 3, 2.2);return $showurl;}/*** 缩放图片* Author: yanjie   <823986855@qq.com>* Date: 2018/9/12 0012*/public function resize_img($url){$file = $url;$ext  = pathinfo($url);$src_im = null;list($width, $height) = getimagesize($file); //获取原图尺寸$percent = (76/$width); //缩放尺寸  76px$newwidth = $width * $percent;$newheight = $height * $percent;switch ($ext['extension']) {case 'jpg':$src_im = imagecreatefromjpeg($file);break;case 'png':$src_im = imagecreatefrompng($file);break;}$dst_im = imagecreatetruecolor($newwidth, $newheight);imagecopyresized($dst_im, $src_im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);$fileurl="./upload/posters/100000".session('user.id')."avator.png";imagepng($dst_im, $fileurl); //输出压缩后的图片imagedestroy($dst_im);imagedestroy($src_im);return $fileurl;}/*** 图片裁剪为圆形图片* Author: yanjie   <823986855@qq.com>* Date: 2018/9/12 0012*/public function yuan_img($imgpath){$ext     = pathinfo($imgpath);$src_img = null;switch ($ext['extension']) {case 'jpg':$src_img = imagecreatefromjpeg($imgpath);break;case 'png':$src_img = imagecreatefrompng($imgpath);break;}$wh  = getimagesize($imgpath);$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);}}}$fileurl="./upload/posters/100000".session('user.id')."avator.png";imagepng($img,$fileurl);imagedestroy($img);return $fileurl;}

Tp5生成带头像二维码海报(带文字描述,居中调整)相关推荐

  1. 微信生成带头像二维码

    生成带头像二维码 <?php //文档 //https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1443433542header ...

  2. ZXing生成条形码、二维码、带logo二维码

    采用的是开源的ZXing,Maven配置如下,jar包下载地址,自己选择版本下载,顺便推荐下Maven Repository <!-- https://mvnrepository.com/art ...

  3. C#利用ZXing.Net生成条形码,二维码和带Logo的二维码

    本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正. 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的 ...

  4. PC端生成小程序二维码海报并下载

    我采用了前端截屏+前端生成二维码的方法展示海报并下载 上代码 //截屏组件 import html2canvas from 'html2canvas' //生成二维码组件 import QRCode ...

  5. Java生成小程序二维码并带参数

    直接上代码: 工具类MpQrUtils.java,获取accessToken与二维码的输入流: import javax.servlet.http.HttpServletRequest;import ...

  6. 基于OpenJWeb平台的微信服务号开发培训-生成带参数二维码

    因为OpenJWeb平台已经集成了微信服务号接口,所以在OpenJWeb平台上开发微信服务号会起到事半功倍的作用.本文介绍如何使用微信公众号接口生成带参数二维码功能. 下面是开发及操作过程: (1)首 ...

  7. Android 扫描、生成、识别二维码、条码 一库搞定

    他来了,他来了,他带着YXing走来了. YXing 集成了CameraX + zxing, 简洁调用,功能完善,自定义扫码界面,再也不用像以前一样cv一堆冗余的Camera代码进项目了. 怎么集成: ...

  8. 微信公众号二维码海报自动生成,海报通推广有绝招

    公众号二维码海报自动生成,使用公众号开发接口生成带参数的二维码和获取用户基本信息(UnionID机制)实现海报通的效果,在自己的服务器上部署就可以,也可以直接使用微号帮平台生成海报二维码. 1.生成海 ...

  9. python制作微信个人二维码_一个python自动生成微信二维码海报的轮子

    由于最近需要做一个线上活动,所以策划了一个微信二维码海报的用户裂变方案.做好了需求以后交给我们可爱的程序媛妹妹.三天过后去问她,她的表情是这样的 她是不是在说,"啊啊,真是不好意思" ...

最新文章

  1. Asp.net的Session和Cookie传值方式
  2. 惠普服务器年销售额,IBM和惠普去年分列服务器收入和发货量第一
  3. spring cloud 微服务调用--ribbon和feign调用
  4. 解决idea启动项目报错:Unable to open debugger port(127.0.0.1:60157):java.net.SocketExceptionsocket closed
  5. INTEL和AMD两大巨头的前身
  6. jenkins -ant-svn 自动化持续部署——web应用war包 ant build.xml配置
  7. (Dijkstra)迪杰斯特拉算法-最短路径算法
  8. 【作业报告】作业5 四则运算 测试与封装 5.1
  9. header元素 footer元素 hgroup元素
  10. Rational rose 安装教程
  11. python_jpype1 调用java代码
  12. ubuntu 10.04 trackpoint
  13. excel如何把多张表合并成一个表_如何将多个 Excel 工作簿的工作表合并成一个工作表?...
  14. 从零开始iOS8编程【HelloWorld】
  15. android 恢复出厂设置原理,Android恢复出厂设置流程分析【Android源码解析十】
  16. 服务窗口关闭了,服务就停止了,真特么烦 pm2了解一下
  17. 全国大学生数学建模竞赛(赛题选择)
  18. 控制台输出——键盘图形
  19. c++计算圆柱体表面积
  20. 人脸识别几个解决方案分析与测评

热门文章

  1. U812.0凭证冲销后前台不能删除问题
  2. 安装ubuntu20.4桌面系统
  3. 2019年,大前端技术趋势程度解读
  4. qtabwidget设置表头_Qt GUI图形图像开发之QT表格控件QTableView,QTableWidget复杂表头(多行表头) 及冻结、固定特定的行的详细方法与实例...
  5. 世界人工智能大会即将举办 AI机器人帮你分类垃圾
  6. coursera课程下载方法
  7. 创业与投资 - 别沉浸于 to vc
  8. chage(charger)
  9. 《麦肯锡方法》第5章 组建团队-思维导图
  10. 使用Arduino Tone()函数演奏旋律