fastadmin 生成邀请海报
记录: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 生成邀请海报相关推荐
- 飞链云数字艺术品-如何生成邀请海报
访问官网 官网地址: https://nft.feilianyun.cn/ 登录后,点击右上角头像,进入个人中心 个人中心 可以看到邀请好友的按钮,点击邀请好友,可以看到邀请海报 第一次进入可能会稍微 ...
- uniapp之小程序端生成分享海报(带自定义参数的二维码)
内容需求: 小程序端生成一个海报,海报内容包括当前授权账号的头像,当前授权账号的邀请码,一张特定图片,分享页面的带对应参数的小程序二维码:生成的海报需要保存到本地 功能方法: 1.前端用canvas绘 ...
- 使用 iview 实现PC端生成推广海报与二维码并下载的功能,基于iview Modal 对话框 与 Carousel 走马灯组件实现
使用 iview 实现PC端生成推广海报与二维码并下载的功能,基于iview Modal 对话框 与 Carousel 走马灯组件实现 前言:最近在对公司网页进行改版的时候遇到一个问题,需要在PC端实 ...
- 小游戏/小程序如何快速生成分享海报图
在应用开发过程中,我们会遇到各种各样的分享场景,例如邀请.拉新.分享内容等.分享链接是 Web 时代常见的分享形式,实现也相对容易.但是现在人们时间大都花在了 APP 上,所以应用之间的分享越来越重要 ...
- Canvas绘图在微信小程序中的应用:生成个性化海报
Canvas绘图在微信小程序中的应用:生成个性化海报 如极客时间的一些实现案例: 基础语法 Canvas本质是一个可以使用脚本(通常为JavaScript)来绘制图形的 HTML 元素,默认大小为30 ...
- 【前端探索】移动端H5生成截图海报的探索
文章目录 需求场景 方案选择 前端生成 服务端生成 方案对比 html2canvas方案 参考文档 html转image 解决图片链接跨域问题 puppeteer方案 参考文档 使用方式 总结 需求场 ...
- h5页面生成分享海报(保存图片、分享)
一.案例简介 最近遇见了h5分享页面,就是自己写的整页内容(内含二维码)可以长按保存到手机里,然后发给别人. 其实就是h5生成分享海报,以前的时候写过这个东西,但是太久了都忘了,然后上网去搜索,答案也 ...
- Vue页面生成分享海报最详说明(含二维码+多种水印方式+常见的坑处理)
功能需求: 海报有1张背景图, 海报上的文案内容动态变化 在背景图的某个位置上添加二维码图片 水印功能 大致思路 html页面部分, 包括背景图,接口得来的数据,以及二维码图片的位置 使用 qrcod ...
- uniapp 生成商品海报并分享保存
uniapp 生成商品海报并分享保存 <template><view class="center"><view class="icon-it ...
最新文章
- centos6卸载mysql服务器_CentOS6.5下卸载自带的MySQL数据库安装MySQL5.6
- 网站单页面排名提升的技巧有哪些?
- python两数相加代码_一边学编程,一边学语数外,用python编程全排列10以内两数加法...
- android:background=@color/white [create file color.xml at res/values/]
- 暴力求解——最大乘积 Maximum Product,UVa 11059
- android studio 导入第三方库的记录
- 不错的html学习网址。
- 四舍五入算法 php,3种PHP实现四舍五入的方法
- 04_NaiveBayes_统计学习方法
- 如何通过页面静态化提升论坛性能
- Reflector.exe + ilDasm.exe + ilasm.exe 破解DundasWebChart(VS2005) 5.5 成功
- 【Oracle】Drop表后闪回
- css属性中如果后面个三个值,那么中间的那个一般代表左右元素的值。
- Excel宏编程代码,根据混合的名次合并计算进退值
- 【电脑自检后无法进入电脑系统的搞定妙方】
- mysql数据库木马查杀_服务器木马后门怎么查杀
- 厦门大学计算机学院夏令营名单,2016年厦门大学信息科学与技术学院推免生夏令营入营名单...
- linux怎么调显卡风扇速度,Ubuntu下无显示器(服务器)手动调节Nvidia显卡风扇转速...
- EayRadius 于 2013-7-19 进行体验度更新,增加用户体验度
- 基于ArcGIS与高分影像进行绿地变化分析
热门文章
- 多图详解!10大高性能开发核心技术
- 优图、音视频实验室之后,腾讯SNG量子实验室也浮出水面
- orange pi java_OrangePi_RK3399_Android6.0_V1.0 使用笔记(编译/烧写) @ Ubuntu 16.04
- wlan频段与信道介绍
- Android 开发idea和studio
- 【深度学习】大概是全网最详细的何恺明团队顶作MoCo系列解读...(完结篇)
- 基于stm32f103智能风扇,可以手动开关也可温控感应和红外感应。 有程序及原理图
- Windows 7日志的CAPI2错误 4107
- 中国石膏产业发展动态调研及运营模式分析报告2021-2027年版
- idea官网无法进入