PHP实现生成推广海报的方法详解
本文实例讲述了PHP实现生成推广海报的方法。分享给大家供大家参考,具体如下:
经常有这样的需求,就是需要在生成推广海报,包含指定的二维码,分享出去别人扫码之后就可以确定用户推荐关系。
仔细分析一下,推广海报必要的要素就是海报背景图和二维码,这两者都容易生成,但要两者结合到一起组合成为一张图二维还要可以保存到本地便于分享出去,这就是难点了,在H5中可以借助canvas画出来完成类似于截图的功能,但放到小程序里边很多局限性。那么我们直接在后台生成海报,前台直接调用。
前期准备:
1.海报背景图, 西安网站建设,背景图一般存服务器,程序本地读取;
2.推广二维码,可以是二维码图片链接,也可以是字符串图像流,如果自己生成二维码,详见:。
方法如下:
/*** 生成宣传海报* @param array 参数,包括图片和文字* @param string $filename 生成海报文件名,不传此参数则不生成文件,直接输出图片* @return [type] [description]*/
function createPoster($config=array(),$filename=""){//如果要看报什么错,可以先注释调这个headerif(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);// imageColorTransparent($imageRes, $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);//关键函数,参数(目标资源,源,目标资源的开始坐标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'];$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'];$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{imagejpeg ($imageRes); //在浏览器上显示imagedestroy($imageRes);}
}
使用示例一:生成带有二维码的海报
$config = array('image'=>array(array('url'=>'qrcode/qrcode.png', //二维码资源'stream'=>0,'left'=>116,'top'=>-216,'right'=>0,'bottom'=>0,'width'=>178,'height'=>178,'opacity'=>100)),'background'=>'bg/bg1.jpg' //背景图
);
$filename = 'bg/'.time().'.jpg';
//echo createPoster($config,$filename);
echo createPoster($config);
PHP实现生成推广海报的方法详解相关推荐
- php+条形码在线怎么生成,php实现生成code128条形码的方法详解
本文实例讲述了php实现生成code128条形码的方法.分享给大家供大家参考,具体如下: 效果图: class BarCode128 { const STARTA = 103; const START ...
- 手把手教你使用PHP生成推广海报
在日常的工作中(比如微信小程序),我们经常有这样的需求,就是需要使用程序生成推广海报,然后海报里要包含指定的二维码,这样用户分享出去别人扫码之后就可以确定用户推荐关系. 单独生成海报背景或者单独生成二 ...
- PHP实现生成推广海报
经常有这样的需求,就是需要在生成推广海报,包含指定的二维码,分享出去别人扫码之后就可以确定用户推荐关系. 仔细分析一下,推广海报必要的要素就是海报背景图和二维码,这两者都容易生成,但要两者结合到一起组 ...
- 使用 iview 实现PC端生成推广海报与二维码并下载的功能,基于iview Modal 对话框 与 Carousel 走马灯组件实现
使用 iview 实现PC端生成推广海报与二维码并下载的功能,基于iview Modal 对话框 与 Carousel 走马灯组件实现 前言:最近在对公司网页进行改版的时候遇到一个问题,需要在PC端实 ...
- 小程序离屏canvas(createOffscreenCanvas)生成推广海报
小程序离屏canvas(createOffscreenCanvas)生成推广海报 离屏canvas调用wx.canvasToTempFilePath报错Failed to execute 'drawI ...
- php 2003生成word,使用PHPWord生成word文档的方法详解
使用PHPWord生成word文档的方法详解 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: 使用PHPWord生成word文档的方法详解.txt ] (友情提示 ...
- 论坛发帖推广方法详解
论坛发帖推广,也就是我们简称的论坛推广是众多推广方法中最常用的一种网站推广方法.特别是对于中小企业来说最为常见,主要体现在他们没有太多资金来投网络广告,也没有很专业的网络推广团队,所以就把论坛推 ...
- 新浪微博怎么推广引流,微博推广引流的三种方法详解
新浪微博怎么推广引流,微博推广引流的三种方法详解,#推广#营销 微博营销有哪些特点?#百收网SEO@千行助推 大家好,上一次内容讲了生意人如何将客户引流到自己的微信上去,受到很多朋友的喜爱,那么这一期 ...
- 【科研绘图】3dmax一键生成太阳系插件SolarSystem使用方法详解
3DMAX太阳系恒星系建模插件(一键生成太阳系插件),太阳系(恒星系)参数化建模并生成动画插件.该插件提供了恒星.行星.卫星.小行星带和彗星的生成功能. [主要功能特性] --太阳系的参数化建模 -- ...
最新文章
- Java 统计字母个数
- 洛谷 T61816 代数式的最值
- Hyperledger Fabric 链码(0) 说明
- python怎么设置图的大小_python – 如何调整seaborn中的子图大小?
- angular-ui-tab-scroll
- [react] react的状态提升是什么?使用场景有哪些
- c语言下标法与指针法,《C和指针》中关于指针与下标的问题
- 月均数据_月均收入15k的数据产品经理=数据+产品经理?
- css span 右端对齐_使用 CSS 实现具有方面感知的幽灵按钮
- maven伺服搭建_nexus搭建maven私服
- thoughtworks业务需求分析师面试总结
- 为了学习Python,我汇总了这10个免费的视频课程!
- 秋招之前实习面经汇总
- 星际2 正在连接服务器,星际征霸游戏连接服务器失败怎么办 解决方案分享
- This scheduler instance is still active but was recovered by another instanc解决办法
- iframe预览文件
- Unity UGUI Toggle监听onValueChanged
- 如何提升测试人员在公司的地位
- 叙事文章的生成(论文翻译)
- Windows 7关闭睡眠(休眠)模式和删除休眠文件