前言:将二维码放到背景图中(生成二维码的方法在前文中已经讲了>>传送门<<)

1.调用

   $parmams=['code_path'=>'public/static/images/code.png',//二维码路径'bg_img_path'=>'public/static/images/background.png',//待合成的背景图路径'out_file_path'=>"'public/static/images/result/"  . time(). '.png',//合成后的图片输出路径'title'=>'海报的文字描述',//可为空];$result = $this->mix($parmams);public function mix(Request $request){$codePath = $params['code_path'];$bgImgPath = $params['bg_img_path'];$outFilePath = $params['out_file_path'];$title = $params['title'];//图片合成$configPost = array(//要加上的图'image' => array(array('url'     => $codePath,       'left'    => 152,         //二维码距离左边像素'top'     => 343,          //二维码距离上边像素'stream'  => 0,             //图片资源是否是字符串图像流'right'   => 0,'bottom'  => 0,'width'   => 340,'height'  => 340,'opacity' => 70),),'text'=>array(array('text'=>'','left'=>0,'top'=>0,'fontPath'=>'simhei.ttf',  //字体文件(或simhei.ttf,冷门字体中文可能乱码)'fontSize'=>20,          //字号'fontColor'=>'255,255,255',   //字体颜色'angle'=>0,)),//背景图'background' =>  $bgImgPath,       );$this->createPoster($configPost, $outFilePath);output_success($outFilePath);}

2.合成类

/*** 图片合成方法* @param array  参数,包括图片和文字* @param string  $filename 生成文件名,不传此参数则不生成文件,直接输出图片* @return [type] [description]*/public function createPoster($config = array(), $filename = ""){//如果要看报什么错,可以先注释调这个header// 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);// 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);}}

PHP海报生成文字图片合成类相关推荐

  1. 使用AI工具如何生成文字图片?其实可以这样生成

    在最近几年,自媒体的风头逐渐兴起,许多人都会选择当一个自媒体博主来当作自己的副业.当我们在进行内容创作的时候,难免会遇到一些需要给文章进行配图的情况,但有时我们会对图片的内容完全没有头绪,其实我们可以 ...

  2. python 生成文字图片_[ImageFont] 如何利用字体生成文字图片

    在OCR识别.检测的数据生成过程当中,我们经常会需要利用字体生成汉字的图片,在Python当中,这一部分的操作通常是通过Pillow 模块提供的ImageFont 模块来完成,下面我们用一个例子,介绍 ...

  3. 使用PIL生成文字图片

    安装PIL pip3 install pillow 使用PIL from PIL import Image, ImageFont, ImageDrawimage = Image.new('RGB', ...

  4. .net生成文字图片

          System.Drawing.Bitmap   bmp=new   Bitmap(Bitmap.FromFile(Server.MapPath("42.jpg"))); ...

  5. 使用python生成文字图片,画圆圈 ,生成圆形图片

    使用python主要使用的是PIL库, 安装所需库PIL 安装方式推荐有很多种,推荐使用pip: pip 是 Python 的包安装程序.其实,pip 就是 Python 标准库(The Python ...

  6. C# 后台 背景图片拼接图片与文字,文字图片生成与背景图片合成

    标题C# 后台 背景图片拼接图片与文字,文字图片生成与背景图片合成 最近有个需求是将生成的邀请码与背景图片合成成为新的图片,查找了一些资料后又整理了一遍,查到了一个群主的帖子,虽然代码略微有点问题,地 ...

  7. C# 图形处理-缩略图,图片合并,图片写文字,图片调整

    1.根据源图片生成缩略图 /// <summary>/// 根据源图片生成缩略图/// </summary>/// <param name="imgPath_o ...

  8. html2canvas(html转图片/html海报生成)

    html2canvas 版本: 1.0.0-rc.4,这里说明下,不同的版本可能会有不同的表现形式.比如一开始用的最新的版本,出现了生成的图片中的文字无缘无故向下偏移一行,没有找到解决办法,于是降低了 ...

  9. 开源create-poster海报生成组件,客户用了都给我加鸡腿(图片又快又清晰,还能早点下班)

    1.组件介绍 1.1最好用的海报生成组件: 生成速度快于html2canvas 生成图片质量高于html2canvas(实践后的结果) 代码结构更简洁,代码量更小,不需要html元素和css 组件更小 ...

最新文章

  1. Beetlsql自定义生成entity,mapper,md代码
  2. ack是什么,如何使用Ack机制,如何关闭Ack机制,基本实现,STORM的消息容错机制,Ack机制
  3. Python 知识点大全,建议收藏留用!
  4. IDEA Java Web 推送Tomcat
  5. html图片往左,如何用js把一张图片由右向左展开?
  6. php生成txt文件_php 批量生成html,txt文件的实现代码
  7. fastai学习——第一个bug
  8. java 建立ssh隧道_如何使用IntelliJ和JDBC SSH隧道并连接到数据库?
  9. 常见数据结构总结,持续更新...
  10. uva 1339 题解
  11. bootstrap,layui,elementui vantui的区别
  12. matlab 电流平均值,电流平均值谐波检测方法MATLAB仿真
  13. angularJs1.x 版本中 uib-tabset 如何默认激活不同的标签页
  14. 利用win10自带的系统配置禁止开机启动项和程序
  15. 管理菜单 结贴回复 来自 202.112.36.253 的回复: TTL 传输中过期
  16. 英语单词辨析(同类单词)
  17. 新能源车牌识别SDK核心算法不断更新
  18. AXP221电源管理芯片使用注意点
  19. mysql两个日期相减,得到相差的天数
  20. 包头中考计算机考试试题2020,2020年内蒙古包头中考数学试卷附答案解析版.docx...

热门文章

  1. 三菱fx3u+485ADP-MB与3台台达变频器modbus通讯程序 通过三菱fx3u 485ADP-MB板对3台台达变频器进行modbus通讯,实现频率设定,启停控制,输出频率读取,输出电压读取
  2. 台式高端计算机,台电27英寸一体机电脑 台式机性能高端体验
  3. 笔记本电脑能安装matlab吗,matlab安装【管理手段】
  4. ElasticSearch 7.7.0 安装部署
  5. 民用/家用 固态硬盘选择及购买
  6. 爱的艺术 - 艾里希·弗洛姆
  7. 自媒体视频如何消重?批量处理去重消重去水印去logo软件
  8. python画图工具
  9. word2003用不了搜狗输入法
  10. hpuoj寻找单身狗