利用phpqrcode二维码生成类库合成带logo的二维码并且用合成的二维码生成海报(二)
时间:2019-10-21
本文章向大家介绍利用phpqrcode二维码生成类库合成带logo的二维码并且用合成的二维码生成海报(二),主要包括利用phpqrcode二维码生成类库合成带logo的二维码并且用合成的二维码生成海报(二)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前期准备
- 引入phpqrcode类库(下载地址:https://download.csdn.net/download/weixin_37557729/11891240;支持彩色二维码的下载地址:https://download.csdn.net/download/weixin_37557729/11891244)
- PHP开启GD扩展库支持
1、利用phpqrcode生成二维码:
原理分析:
下载下来的类文件是一个压缩包,包含很多文件和演示程序,我们只需要里边的phpqrcode.php
这一个文件就可以生成二维码了,它是一个多个类的集合文件,我们需要用到里边的QRcode类的png()方法:
//测试生成带头像的网站二维码海报 public function ce_haibao_qrcode(){ $codeurl = "http://wap.kelaikequ.com"; Vendor('PHPQRcode.class#phpqrcode'); $logoQR = "http://thirdwx.qlogo.cn/mmopen/vi_32/icaYhiapVcmsyGnHouHeSvYiaz8yxtvfBicgx5x8joGh4uNiaibp8skQf8Uv4CNtibsJDndbOQwI9LSvDQP6slFQaLy4g/132"; $level=3; $size=6; $errorCorrectionLevel =intval($level) ;//容错级别 $matrixPointSize = intval($size);//生成图片大小 $dirPath ='./Uploads/qrcode/'.date('Y-m-d').'/';//保存二维码路径 $dirPath_B ='/Uploads/qrcode/'.date('Y-m-d').'/';//保存二维码路径 if(!file_exists($dirPath)){ mkdir($dirPath, 0777); } $tmpName = time().".png"; //保存在服务器上的二维码名称 $qrcodeName = $dirPath .$tmpName; //保存在服务器上的二维码路径 $qrcodeName_B = $dirPath_B .$tmpName; //保存在服务器上的二维码路径 //生成二维码图片 $object = new \QRcode(); $object->png($codeurl, $qrcodeName, $errorCorrectionLevel, $matrixPointSize, 2); //$QR = imagecreatefrompng($qrcodeName); $QR = $qrcodeName; $QRlogoPath = './Uploads/qrcode/qrlogo/'.date('Y-m-d').'/'; $QRlogoPath_B = '/Uploads/qrcode/qrlogo/'.date('Y-m-d').'/'; if(!file_exists($QRlogoPath)){ mkdir($QRlogoPath, 0777); } $qrcode = time().'.png'; $QRlogo = $QRlogoPath .$qrcode; $QRlogo_B = $QRlogoPath_B .$qrcode; if($logoQR !==FALSE){ $QR = imagecreatefromstring(file_get_contents($QR)); $logo = imagecreatefromstring(file_get_contents($logoQR)); $QR_width = imagesx($QR);//二维码图片宽度 $QR_height = imagesy($QR);//二维码图片高度 $logo_width = imagesx($logo);//logo图片宽度 $logo_height = imagesy($logo);//logo图片高度 $logo_qr_width = $QR_width / 5; $scale = $logo_width/$logo_qr_width; $logo_qr_height = $logo_height/$scale; $from_width = ($QR_width - $logo_qr_width) / 2; //重新组合图片并调整大小 imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); header('Content-type: image/png');
//合成带logo的二维码 ImagePng($QR,$QRlogo); $dst_path = './Uploads/haibao/haibao.png';//海报素材底图 $src_path = $QRlogo; //覆盖图,用上面的那张图QRlogo $haibaoPath = './Uploads/qrcode/haibao/'.date('Y-m-d').'/'; //$haibaoPath_B = '/Uploads/qrcode/haibao/'.date('Y-m-d').'/'; if(!file_exists($haibaoPath)){ mkdir($haibaoPath, 0777); } $haibao = time().'.png'; $haibao = $haibaoPath .$haibao; //$haibao_B = $haibaoPath_B .$haibao; //创建图片实例 $dst = imagecreatefromstring(file_get_contents($dst_path));//海报 $src = imagecreatefromstring(file_get_contents($src_path));//二维码 //获取覆盖图的宽高 list($src_w, $src_h) = getimagesize($src_path); //获取海报的宽高 list($dst_w, $dst_h) = getimagesize($dst_path); // imagecopymerge($dst, $src, 20, 120, 0, 0, $src_w, $src_h, 100); imagecopymerge($dst, $src, ($dst_w-$src_w)/2, $dst_h-100-$src_h, 0, 0, $src_w, $src_h, 100); list($dst_w, $dst_h) = getimagesize($dst_path); imagepng($dst,$haibao);//生成图片并保存到服务器上 合成的海报 imagedestroy($dst); imagedestroy($src); $haibao = substr($haibao,1);//去掉左边第一个小点 $arr['msg'] = $haibao; echo json_encode($arr);exit; } }
原文地址:https://www.cnblogs.com/zmdComeOn/p/11713500.html
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 用C++跟你聊聊“外观模式”
- 【tensorflow2.0】使用tensorflow-serving部署模型
- 用C++跟你聊聊“模板方法模式”
- 用C++跟你聊聊“原型模式” (复制/拷贝构造函数)
- 【numpy】生成图片格式的数据
- 【numpy】新版本中numpy(numpy>1.17.0)中的random模块
- 用C++跟你聊聊“代理模式”
- mybatis与spring整合步骤以及自己遇到的错误
- 用C++跟你聊聊“装饰者模式”
- 【python实现卷积神经网络】激活函数的实现(sigmoid、softmax、tanh、relu、leakyrelu、elu、selu、softplus)
- 【python实现卷积神经网络】损失函数的定义(均方误差损失、交叉熵损失)
- 【python实现卷积神经网络】优化器的实现(SGD、Nesterov、Adagrad、Adadelta、RMSprop、Adam)
- 用C++跟你聊聊“策略模式”
- 【python实现卷积神经网络】卷积层Conv2D反向传播过程
- 【python实现卷积神经网络】全连接层实现