手机版

PHP生成宣传海报方法详解

时间:2021-09-01 来源:互联网 编辑:宝哥软件园 浏览:

本文阐述了用PHP创建促销海报的方法。分享给大家参考,如下:

经常有这样的需求,就是需要生成包含指定二维码的宣传海报,与他人分享扫码后再确定用户推荐关系。

仔细分析,推广海报必不可少的要素是海报背景图和二维码,这两者都很容易生成,但如果组合成一张图片,就可以本地保存,很容易共享,这是一个难点。在H5,类似截图的功能可以通过画布绘制来完成,但是将其放入小程序中有很多限制。然后我们直接在后台生成海报,直接在前台调用。

准备工作:

1.海报背景图,一般存储在服务器中,由程序本地读取;2.推广二维码,可以是二维码图片链接,也可以是字符串图像流。如果您自己生成二维码,请参见:使用phpqrcode生成二维码。

方法如下:

/** * 生成宣传海报* @param数组参数,包括图片和文字* @param字符串$文件名生成海报文件名,不传此参数则不生成文件,直接输出图片* @ return[type][description]*/function createPoster($ config=array(),$filename=''){ //如果要看报什么错,可以先注释调这个标题如果(空($filename))标题(“内容类型:图像/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 ',//字体颜色角度'=0,$ background=$ config[' background '];//海报最底层得背景//背景方法$ background info=getimagesize($ background);$ background fun=' imagecreatefrom ' .image _ type _ to _ extension($ background info[2],false);$背景=$背景乐趣($背景);$背景宽度=imagesx($背景);//背景宽度$背景高度=imagesy($背景);//背景高度$ imageRes=imagecreatetrue color($背景宽度,$背景高度);$ color=imagecolor allocate($ imageRes,0,0,0);imagefill($imageRes,0,0,$ color);//image color transparent($ imageRes,$ color);//颜色透明imagecopy重采样($ imageRes,$background,0,0,0,0,imagesx($background),imagesy($background),imagesx($background),imagesy($ background));//处理了图片if(!空($ 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];$ ReshStreak=$ info[1];//建立画板,缩放图片至指定尺寸$ canvas=imagecreatetrue color($ val[' width '],$ val[' height ']);imagefill($canvas,0,0,$ color);//关键函数,参数(目标资源,源,目标资源的开始坐标x,y,源资源的开始坐标x,y,目标资源的宽高w,h,源资源的宽高w,h)imagecopyressaged($ canvas,$res,0,0,0,0,$val['width'],$val['height'],$resWidth,$ ReshString);$val['left']=$val['left']0?$背景宽度-ABS($ val[' left '])-$ val[' width ']: $ val[' left '];$val['top']=$val['top']0?$背景高度-ABS($ val[' top '])-$ val[' height ']: $ val[' top '];//放置图像imagecopymerge($imageRes,$canvas,$val['left'],$val['top'],$val['right'],$val['bottom'],$val['width'],$val['height'],$val['不透明度']);//左,上,右,下,宽度,高度,透明度} } //处理文字if(!空($ config[' text ']){ foreach($ config[' text ']as $ key=$ val){ $ val=array _ merge($ textDefault,$ val);list($R,$G,$B)=explode(',',$ val[' font color ']);$ font color=imagecolor allocate($ imageRes,$R,$G,$ B);$val['left']=$val['left']0?$背景宽度-ABS($ val[' left ']): $ val[' left '];$val['top']=$val['top']0?$背景高度-ABS($ val[' top ']): $ val[' top '];imagettftext($imageRes,$val['fontSize'],$val['angle'],$val['left'],$val['top'],$fontColor,$val['fontPath'],$ val[' text ']);} } //生成图片if(!空($filename)){ $ RES=imagejpeg($ imageRes,$ filename,90);//保存到本地图像销毁($ imageRes);if(!$res)返回错误的返回$ filename } else { image JPEG($ imageRes);//在浏览器上显示图像销毁($ imageRes);}}使用示例一:生成带有二维码的海报

$ config=array(' image '=array(array(' URL '=' QR码/QR码。png ',//二维码资源stream'=0,' left'=116,' top'=-216,' right'=0,' bottom'=0,' width'=178,' height'=178,' opacity'=100)),' background'='bg/bg1.jpg' //背景图);$filename='bg/' .时间(). jpg ';//echo createPoster($config,$ filename);echo createPoster($ config);

使用示例二:生成带有图像,昵称和二维码的海报

$ config=array(' text '=array(array(' text '=)昵称,' left'=182,' top'=105,' fontPath'='qrcode/simhei.ttf ',//字体文件fontSize'=18,//字号fontColor'='255,0,0 ',//字体颜色角度'=0,'图像'=数组(数组(' URL '=' QR码/QR码。png ',//图片资源路径' left'=130,' top'=-140,' stream'=0,//图片资源是否是字符串图像流右'=0,'底'=0,'宽'=150,'高'=150,'不透明度'=100),数组(' URL '=' https://wx。qlogo。cn/MMO pen/VI _ 32/dyiaogq 83 eofd 96 opk 97 rxwm 179g 9 ijytigqxod 8 jh9 icff 6 CIA 6 sj0 fxeillmlf 0 dvvia F3 snibxtravo3c 8 ria2w/0 ','左'=120,'顶$filename='二维码/' .时间(). jpg ';//echo createPoster($config,$ filename);echo createPoster($ config);

更多关于服务器端编程语言(专业超文本预处理器的缩写)相关内容感兴趣的读者可查看本站专题: 《PHP图形与图片操作技巧汇总》 、 《php文件操作总结》 、 《PHP数组(Array)操作技巧大全》 、 《PHP基本语法入门教程》 、 《PHP运算与运算符用法总结》 、 《php面向对象程序设计入门教程》 、 《PHP网络编程技巧总结》 、 《php字符串(string)用法总结》 、 《php+mysql数据库操作入门教程》 及《php常见数据库操作技巧汇总》

希望本文所述对大家服务器端编程语言(专业超文本预处理器的缩写)程序设计有所帮助。

版权声明:PHP生成宣传海报方法详解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。