记录:fastadmin 生成APP邀请海报,并附带邀请码

一、安装二维码生成 插件

二、生成邀请海报代码:
    //生成海报public function get_poster(){$uid = $this->auth->id;//用户信息$userInfo = Db::name('user')->where(['id'=>$uid])->field('id,level_id,liveness,is_vertify,avatar,nickname,invite_code')->find();$fileUrl = '/uploads/qrcode/haibao/'. $userInfo['id'].'.jpg';$filename = ROOT_PATH .'public'. $fileUrl;if (file_exists($filename)){return cdnurl($fileUrl,true);}//生成用户二维码$text = cdnurl('/api/registerh5?parent_code='.$userInfo['invite_code'],true);$qrInfo = $this->buildQrcode($text,$userInfo['nickname']);$config = array('image'=>array(array('url'=>$qrInfo,     //二维码地址'is_yuan'=>false,          //true图片圆形处理'stream'=>0,'left'=>-1,               //小于0为小平居中                             'top'=>610,'right'=>0,'width'=>350,             //图像宽'height'=>350,            //图像高'opacity'=>100            //透明度),),'text'=>array(array('text'=>$userInfo['invite_code'],            //文字内容'left'=>-1,                              //小于0为水平居中      'top'=>510,'fontSize'=>28,                         //字号'fontColor'=>'34,34,38',                //字体颜色'angle'=>0,'fontPath'=>ROOT_PATH.'public/assets/fonts/lato/lato-black.ttf',     //字体文件)),'background'=>cdnurl('/assets/img/haibao.png',true),          //背景图);//echo createPoster($config);//$filename为空是真接浏览器显示图片createPoster($config,$filename);return cdnurl($fileUrl,true);}// 生成二维码private function buildQrcode($text,$label){$params = ['text'           => $text,'size'           => 350,    //大小'padding'        => 15,    //内边距'errorlevel'     => 'medium',   //容错级别:low-低   medium-中等   quartile-高   high-超高'foreground'     => "#000000",     //前景色'background'     => "#ffffff",  //背景色'logo'           => 0,    //Logo:1-显示,0-不显示'logosize'       => '',  //Logo大小'label'          => $label, //标签'labelfontsize'  => 14, //标签大小'labelalignment' => 'center',    //标签水平位置:left-左  center-中   right-右];$qrCode = \addons\qrcode\library\Service::qrcode($params);$response = Response::create()->header("Content-Type", "image/png");// 直接显示二维码header('Content-Type: ' . $qrCode->getContentType());$response->content($qrCode->writeString());// 写入到文件$fileUrl = '/uploads/qrcode/haibao/' . md5(implode('', $params)) . '.png';$filePath = ROOT_PATH .'public'. $fileUrl;if (!file_exists(ROOT_PATH .'public/uploads/qrcode/')) mkdir (ROOT_PATH .'public/uploads/qrcode/',0777,true); if (!file_exists(ROOT_PATH .'public/uploads/qrcode/haibao/')) mkdir (ROOT_PATH .'public/uploads/qrcode/haibao/',0777,true); $qrCode->writeFile($filePath);return $filePath;}
/*** 生成宣传海报* @param array  参数,包括图片和文字* @param string  $filename 生成海报文件名,不传此参数则不生成文件,直接输出图片* @return [type] [description]*/
function createPoster($config = array() , $filename = "") {//如果要看报什么错,可以先注释调这个header//if(empty($filename)) header("content-type: image/png");if (empty($filename)) header("content-type: image/png");$imageDefault = array('left' => 0,'top' => 0,'right' => 0,'bottom' => 0,'width' => 100,'height' => 100,'opacity' => 100);$textDefault = array('text' => '','left' => 0,'top' => 0,'fontSize' => 32, //字号'fontColor' => '255,255,255', //字体颜色'angle' => 0,);$background = $config['background']; //海报最底层得背景//背景方法$backgroundInfo = getimagesize($background);$backgroundFun = 'imagecreatefrom' . image_type_to_extension($backgroundInfo[2], false);$background = $backgroundFun($background);$backgroundWidth = imagesx($background); //背景宽度$backgroundHeight = imagesy($background); //背景高度$imageRes = imageCreatetruecolor($backgroundWidth, $backgroundHeight);$color = imagecolorallocate($imageRes, 0, 0, 0);imagefill($imageRes, 0, 0, $color);imagecopyresampled($imageRes, $background, 0, 0, 0, 0, imagesx($background) , imagesy($background) , imagesx($background) , imagesy($background));//处理了图片if (!empty($config['image'])) {foreach ($config['image'] as $key => $val) {$val = array_merge($imageDefault, $val);$info = getimagesize($val['url']);$function = 'imagecreatefrom' . image_type_to_extension($info[2], false);if ($val['stream']) { //如果传的是字符串图像流$info = getimagesizefromstring($val['url']);$function = 'imagecreatefromstring';}$res = $function($val['url']);$resWidth = $info[0];$resHeight = $info[1];//建立画板 ,缩放图片至指定尺寸$canvas = imagecreatetruecolor($val['width'], $val['height']);imagefill($canvas, 0, 0, $color);//如果是透明的gif或png做透明处理$ext = pathinfo($val['url']);if (array_key_exists('extension',$ext)) {if ($ext['extension'] == 'gif' || $ext['extension'] == 'png') {// imageColorTransparent($canvas, $color); //颜色透明                     }}//关键函数,参数(目标资源,源,目标资源的开始坐标x,y, 源资源的开始坐标x,y,目标资源的宽高w,h,源资源的宽高w,h)imagecopyresampled($canvas, $res, 0, 0, 0, 0, $val['width'], $val['height'], $resWidth, $resHeight);//$val['left'] = $val['left']<0?$backgroundWidth- abs($val['left']) - $val['width']:$val['left'];//如果left小于-1我这做成了计算让其水平居中if ($val['left'] < 0) {$val['left'] = ceil($backgroundWidth - $val['width']) / 2;}$val['top'] = $val['top'] < 0 ? $backgroundHeight - abs($val['top']) - $val['height'] : $val['top'];//放置图像imagecopymerge($imageRes, $canvas, $val['left'], $val['top'], $val['right'], $val['bottom'], $val['width'], $val['height'], $val['opacity']); //左,上,右,下,宽度,高度,透明度}}//处理文字if (!empty($config['text'])) {foreach ($config['text'] as $key => $val) {$val = array_merge($textDefault, $val);list($R, $G, $B) = explode(',', $val['fontColor']);$fontColor = imagecolorallocate($imageRes, $R, $G, $B);//$val['left'] = $val['left']<0?$backgroundWidth- abs($val['left']):$val['left'];//如果left小于-1我这做成了计算让其水平居中if ($val['left'] < 0) {$fontBox = imagettfbbox($val['fontSize'], 0, $val['fontPath'], $val['text']); //文字水平居中实质$val['left'] = ceil(($backgroundWidth - $fontBox[2]) / 2); //计算文字的水平位置}$val['top'] = $val['top'] < 0 ? $backgroundHeight - abs($val['top']) : $val['top'];imagettftext($imageRes, $val['fontSize'], $val['angle'], $val['left'], $val['top'], $fontColor, $val['fontPath'], $val['text']);}}//生成图片if (!empty($filename)) {$res = imagejpeg($imageRes, $filename, 90); //保存到本地imagedestroy($imageRes);if (!$res) return false;return $filename;} else {header("Content-type:image/png");imagejpeg($imageRes); //在浏览器上显示imagedestroy($imageRes);}
}
三、效果图示:

fastadmin 生成邀请海报相关推荐

  1. 飞链云数字艺术品-如何生成邀请海报

    访问官网 官网地址: https://nft.feilianyun.cn/ 登录后,点击右上角头像,进入个人中心 个人中心 可以看到邀请好友的按钮,点击邀请好友,可以看到邀请海报 第一次进入可能会稍微 ...

  2. uniapp之小程序端生成分享海报(带自定义参数的二维码)

    内容需求: 小程序端生成一个海报,海报内容包括当前授权账号的头像,当前授权账号的邀请码,一张特定图片,分享页面的带对应参数的小程序二维码:生成的海报需要保存到本地 功能方法: 1.前端用canvas绘 ...

  3. 使用 iview 实现PC端生成推广海报与二维码并下载的功能,基于iview Modal 对话框 与 Carousel 走马灯组件实现

    使用 iview 实现PC端生成推广海报与二维码并下载的功能,基于iview Modal 对话框 与 Carousel 走马灯组件实现 前言:最近在对公司网页进行改版的时候遇到一个问题,需要在PC端实 ...

  4. 小游戏/小程序如何快速生成分享海报图

    在应用开发过程中,我们会遇到各种各样的分享场景,例如邀请.拉新.分享内容等.分享链接是 Web 时代常见的分享形式,实现也相对容易.但是现在人们时间大都花在了 APP 上,所以应用之间的分享越来越重要 ...

  5. Canvas绘图在微信小程序中的应用:生成个性化海报

    Canvas绘图在微信小程序中的应用:生成个性化海报 如极客时间的一些实现案例: 基础语法 Canvas本质是一个可以使用脚本(通常为JavaScript)来绘制图形的 HTML 元素,默认大小为30 ...

  6. 【前端探索】移动端H5生成截图海报的探索

    文章目录 需求场景 方案选择 前端生成 服务端生成 方案对比 html2canvas方案 参考文档 html转image 解决图片链接跨域问题 puppeteer方案 参考文档 使用方式 总结 需求场 ...

  7. h5页面生成分享海报(保存图片、分享)

    一.案例简介 最近遇见了h5分享页面,就是自己写的整页内容(内含二维码)可以长按保存到手机里,然后发给别人. 其实就是h5生成分享海报,以前的时候写过这个东西,但是太久了都忘了,然后上网去搜索,答案也 ...

  8. Vue页面生成分享海报最详说明(含二维码+多种水印方式+常见的坑处理)

    功能需求: 海报有1张背景图, 海报上的文案内容动态变化 在背景图的某个位置上添加二维码图片 水印功能 大致思路 html页面部分, 包括背景图,接口得来的数据,以及二维码图片的位置 使用 qrcod ...

  9. uniapp 生成商品海报并分享保存

    uniapp 生成商品海报并分享保存 <template><view class="center"><view class="icon-it ...

最新文章

  1. centos6卸载mysql服务器_CentOS6.5下卸载自带的MySQL数据库安装MySQL5.6
  2. 网站单页面排名提升的技巧有哪些?
  3. python两数相加代码_一边学编程,一边学语数外,用python编程全排列10以内两数加法...
  4. android:background=@color/white [create file color.xml at res/values/]
  5. 暴力求解——最大乘积 Maximum Product,UVa 11059
  6. android studio 导入第三方库的记录
  7. 不错的html学习网址。
  8. 四舍五入算法 php,3种PHP实现四舍五入的方法
  9. 04_NaiveBayes_统计学习方法
  10. 如何通过页面静态化提升论坛性能
  11. Reflector.exe + ilDasm.exe + ilasm.exe 破解DundasWebChart(VS2005) 5.5 成功
  12. 【Oracle】Drop表后闪回
  13. css属性中如果后面个三个值,那么中间的那个一般代表左右元素的值。
  14. Excel宏编程代码,根据混合的名次合并计算进退值
  15. 【电脑自检后无法进入电脑系统的搞定妙方】
  16. mysql数据库木马查杀_服务器木马后门怎么查杀
  17. 厦门大学计算机学院夏令营名单,2016年厦门大学信息科学与技术学院推免生夏令营入营名单...
  18. linux怎么调显卡风扇速度,Ubuntu下无显示器(服务器)手动调节Nvidia显卡风扇转速...
  19. EayRadius 于 2013-7-19 进行体验度更新,增加用户体验度
  20. 基于ArcGIS与高分影像进行绿地变化分析

热门文章

  1. 多图详解!10大高性能开发核心技术
  2. 优图、音视频实验室之后,腾讯SNG量子实验室也浮出水面
  3. orange pi java_OrangePi_RK3399_Android6.0_V1.0 使用笔记(编译/烧写) @ Ubuntu 16.04
  4. wlan频段与信道介绍
  5. Android 开发idea和studio
  6. 【深度学习】大概是全网最详细的何恺明团队顶作MoCo系列解读...(完结篇)
  7. 基于stm32f103智能风扇,可以手动开关也可温控感应和红外感应。 有程序及原理图
  8. Windows 7日志的CAPI2错误 4107
  9. 中国石膏产业发展动态调研及运营模式分析报告2021-2027年版
  10. idea官网无法进入