自己做个记录,省的以后要去做过的项目里扒

1.下载安装包,地址:
链接:https://pan.baidu.com/s/1EBbgJYHXJp-4YQA7zDT5gw
提取码:qboc

2.下载完放到了vendor目录下,就可以直接用了
2.1如果只是单纯生成二维码,这一块即可

//生成二维码
public function qrcode(){$result = ['status'=>false,  'msg'=>'操作失败'];header("Content-type:image/png");require "../vendor/phpqrcode/phpqrcode.php";$qRcode = new \QRcode();$url = 'www.baidu.com';$qrcode_path = 'uploads/qocode/';is_dir($qrcode_path) OR mkdir($qrcode_path, 0777, true);$qrcode_img = $qrcode_path.'1.jpg';// 纠错级别:L、M、Q、H$level = 'L';// 点的大小:1到10,用于手机端4就可以了$size = 5;$qRcode->png($url, $qrcode_img, $level, $size);$imagestring = base64_encode(ob_get_contents());ob_end_clean();$result = ['status'=>true,  'data'=>$dis_img];return $result;}

一个普通的二维码就出来了

2.2 并与背景图、文字组合生成分享海报
控制器里

public function bgQrode(){$tmp_bg_image = 'static/img/template.png';//背景图路径//获取二维码,调用了上边那个方法$qrcode_img = '';$qr_res = $this->extendQrcode();if($qr_res['status']){$qrcode_img = $qr_res['data'];}//新文件名$share_path = 'uploads/share/';is_dir($share_path) OR mkdir($share_path, 0777, true);$share_img = $share_path.'1.jpg';composite_picture($tmp_bg_image, $qrcode_img, $share_img, false, '', '', false, '', 150, 510); //模板背景, 二维码, 海报, 二维码是否缩小, 二维码缩小的宽度,二维码缩小的高度,是否等比例缩放, 文字, 二维码在x轴的位置, 二维码在y轴的位置$result = ['status'=>true, 'data'=>$share_img];return json_encode($result, 320);}

一些图片组合方法写到了common.php中,二维码的位置和文字的位置可以根据需要改动

/*
* 合并图片
* @ $bg_img 背景图片
* @ $qrcode_img 二维码图片
* @ $new_filename 新文件名
* @ $is_suoxiao 组合的图片是否缩小
* @ $n_w 缩小的宽
* @ $n_h 缩小的高
* @ $is_per 是否按比例缩小
* @ $text 文字
* @ $s_width 要组合的图片在x轴的位置
* @ $s_height 要组合的图片在y轴的位置
*/
function composite_picture($bg_img, $qrcode_img, $new_filename, $is_suoxiao, $n_w='', $n_h='', $is_per=false, $text='', $s_width='0', $s_height='0'){if($is_suoxiao){$src_im = imgsuoxiao($qrcode_img, $n_w, $n_h, $is_per);}else{$src_im = $qrcode_img;}$bgimg = imagecreatefromstring(file_get_contents($bg_img));//背景图$src = imagecreatefromstring(file_get_contents($src_im));//组合图list($src_w, $src_h) = getimagesize($src_im);imagecopy($bgimg, $src, $s_width, $s_height, 0, 0, $src_w, $src_h);list($bgimg_w, $bgimg_h, $bgimg_type) = getimagesize($bg_img);switch ($bgimg_type) {case 1://GIFheader('Content-Type: image/gif');header('Content-Disposition: inline; filename="image.gif"');$result = imagegif($bgimg, $new_filename);break;case 2://JPGheader('Content-Type: image/jpeg');header('Content-Disposition: inline; filename="image.jpg"');imagejpeg($bgimg, $new_filename);break;case 3://PNGheader('Content-Type: image/png');header('Content-Disposition: inline; filename="image.png"');imagepng($bgimg, $new_filename);break;default:break;}imagedestroy($bgimg);imagedestroy($src);if($text){$newss = numimage($text,$new_filename,15,3,230,720);return $newss;}else{return $new_filename;}return $new_filename;// exit;
}//缩小图片
function imgsuoxiao($filename, $n_w, $n_h, $is_per=false){list($width, $height, $dst_type)=getimagesize($filename);if($is_per){$per=0.3;$n_w=$width*$per;$n_h=$height*$per;}switch ($dst_type) {case 2://JPG$img=imagecreatefromjpeg($filename);break;case 3://PNG$img = imagecreatefrompng($filename);break;default:break;}$new=imagecreatetruecolor($n_w, $n_h);//copy部分图像并调整imagecopyresized($new, $img,0, 0,0, 0,$n_w, $n_h, $width, $height);//图像输出新图片、另存为imagejpeg($new, $filename);imagedestroy($new);imagedestroy($img);return $filename;
}/*** 像图片中添加文字* @param $txt 文本文字* @param $image 图片路径* @param $size  文字大小* @param $scale 文字旋转度* @param $x 在x轴上的位置* @param $y 在y轴上的位置* @param $color 字体颜色
28  */
function numimage($txt,$image,$size,$scale,$x,$y, $color="黑色")
{list($dst_w, $dst_h, $dst_type) = getimagesize($image);switch ($dst_type) {case 2://JPG$im = imagecreatefromjpeg($image);break;case 3://PNG$im = imagecreatefrompng($image);break;default:break;}$textcolor = imagecolorallocate($im, 0, 0, 0);if($color=="白色"){$textcolor = imagecolorallocate($im, 255, 255, 255);}$qr_size = imagesx($im);$font = realpath('static/STSONG.TTF'); //引入字体imagettftext($im, $size,0,$x,$y, $textcolor, $font, $txt);$myImage = ImageCreate(245,245); //参数为宽度和高度imagecopyresampled($myImage, $im, 0, 0, 0, 0, 0, 80, 10, 10); //重新组合图片并调整大小header("Content-type: image/jpeg");imagejpeg($im, $image);imagedestroy($im);return $image;
}

海报就完成了

Thinkphp5 生成二维码并与背景图、文字组合生成分享海报相关推荐

  1. php生成二维码并与背景图片合成

    1. 下载 phpqrcode  PHP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,查看地址:http://phpqrcode.source ...

  2. qrcode 生成二维码,带logo 带文字描述

    qrcode 生成二维码 1.引入 pom.xml 2. ResourceRenderer 3. QRCodeUtil 4. QRCodeController 5. HTML 6. 测试 1.引入 p ...

  3. java 生成二维码可带LOGO和文字描述

    maven依赖 <properties><zxing.version>3.3.0</zxing.version><commons-lang-version&g ...

  4. java 通过Qrcode生成二维码添加图片logo和文字描述

    一个简单的javaweb项目 注释比较多直接上代码 附上使用的jar包Qrcode package com.fehorizon.erp.pda.utils;import java.awt.Color; ...

  5. python api文档生成二维码_使用Python第三方库生成二维码

    本文主要介绍两个可用于生成二维码的Python第三方库:MyQR和qrcode. MyQR的使用: 安装: pip install MyQR 导入: from MyQR import myqr imp ...

  6. javascript生成二维码

    http://www.w3dev.cn/article/20140617/javascript-create-QR-code.aspx jquery.qrcode.js 是居于jquery类库的绘制二 ...

  7. Unity 生成二维码 融合图片

    Unity 生成二维码,并将二维码和已有背景图片融合,保存到本地,,, 1.场景的搭建 2.代码的编写(参考链接) using System.IO; using UnityEngine; using ...

  8. Java自定义生成二维码(兼容你所有的需求)

    1.概述 作为Java开发人员,说到生成二维码就会想到zxing开源二维码图像处理库,不可否认的是zxing确实很强大,但是实际需求中会遇到各种各样的需求是zxing满足不了的,于是就有了想法自己扩展 ...

  9. .NetCore使用Gma.QrCodeNet生成二维码显示VCard名片格式

    部分数据从下面这个链接来的,只是觉得代码比较冗余,所以........ 想看的可以去看下: C# 生成 联系人 二维码_勇敢小菜鸟的博客-CSDN博客NuGet 引用库不废话贴代码:using Gma ...

最新文章

  1. pythonprint end_python print end =''
  2. 对于个人(注册表)与团队(团队表)(两张表没有关联)的展示与可空判断
  3. Linux 权限、磁盘操作命令-Linux基础环境命令学习笔记
  4. c语言i=5.6a=(int)i,第一章C语言概述.ppt
  5. Servlet 3.0对上传的支持
  6. Maven构建Web项目
  7. 服务器系统小米随身wifi,Mac OS10.13正常使用的小米随身WIFI无线驱动 | 陳松's 博客...
  8. UML(统一建模语言)
  9. JTF的Unable to invoke request异常或Unable to find a MessageBodyReader of content-type application..异常详解
  10. 浏览器提示网站链接不安全,证书过期了
  11. 不同时区时间换算_不同时区时间转换
  12. Linux怎么将输入法添加,在Linux系统中给fcitx下的输入法添加自定义词库的方法
  13. ICO图标在线生成,php生成ICO图标在线制作源码
  14. OpenCV学习17_ 分水岭算法
  15. [音乐心情]高品位精品音乐:百听不厌的醉人曲调欣赏
  16. 帮你快速升职的六大方法http://career.eol.cn/mian_shi_4350/20080818/t20080818_317758.shtml
  17. matlab中sinc()函数的绘制及解析
  18. 《重学Java设计模式》作者开始录视频了
  19. day1 - SDK入门
  20. Linux高级运维 第四章 文件的基本管理和XFS文件系统备份恢复

热门文章

  1. WordPress 古腾堡编辑器将如何影响企业?
  2. MySQL修改表名注释
  3. 码绘VS手绘|processing“运动”主题创作——如何让一只沙雕鸟起飞
  4. 七 Jenkins创建任务实现自动化运维部署
  5. 【技术变现小技巧】-- Boss直聘 批量求简历
  6. 区块链电商市场迎来新高潮 TBK记账系统耀世启航
  7. 区块链电商:信息透明可视化,加强溯源防伪信用建档
  8. STM32读取MPU6050陀螺仪芯片数据核心程序
  9. 陀螺仪误差分析与选型
  10. WDK学习笔记第一周