利用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 = "https://www.baidu.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;
} }
利用phpqrcode二维码生成类库合成带logo的二维码并且用合成的二维码生成海报(二)的更多相关文章
- phpqrcode 分别生成普通、带logo、带背景带logo二维码
前提:下载好 phpqrcode 类库 1.生成普通二维码 //引入类库 include('phpqrcode/phpqrcode.php'); //二维码里面的链接地址 $url="htt ...
- 生成二维码、条形码、带logo的二维码
Nuget安装ZXing.Net,帮助类: using System; using System.Collections.Generic; using System.Drawing; using Sy ...
- php背景图片上生成二维码,二维码上带logo 代码示例 (原)
依赖库文件 phpqrcode.php (下载地址://www.jb51.net/codes/189897.html :或者在官网下载:http://phpqrcode.sourceforge.net ...
- c#高效准确的条形码、线性条码、QR二维码读写类库-SharpBarcode介绍
SharpBarcode是一款支持.NET(C#,VB)的高效易用的条形码.QR二维码的读取和生成类库. 主要功能: 1.支持几乎所有常见类型的线性条形码和QR二维码的读取,高效读取,准确率高. 2. ...
- 利用phpqrcode二维码生成类库和imagecopymerge函数制拼接图片的经验
前期准备 引入phpqrcode类库(下载地址:https://sourceforge.net/projects/phpqrcode/) PHP开启GD扩展库支持 1.利用phpqrcode生成二维码 ...
- 利用PHP QR Code生成二维码(带logo)
转自:http://www.cnblogs.com/txw1958/p/phpqrcode.html HP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示 ...
- phpqrcode生成带logo的二维码图片及带文字的二维码图片
<?php require_once "./phpqrcode/phpqrcode.php"; /** * 这样就可以生成二维码了,实际上在png这个方法里还有几个参数需要使 ...
- tp5 thinkphp 使用phpqrcode生成带Logo的二维码
1 下载生成二维码类库 composer require aferrandini/phpqrcode 2 点击按钮下载 //二维码下载 public function down_qrcode() { ...
- 使用PHP二维码生成类库PHP QR Code生成二维码
<?php include 'phpqrcode.php'; $value = 'http://www.helloweba.com'; //二维码内容 $errorCorrectionLevel ...
随机推荐
- unittest---unittest多种加载用例方法
在做自动化测试我们对执行用例很有要求,因为每条用例可能就和上一条数据有关系,那么我想要批量执行一些用例呢?这个怎么去操作呢?unittest自带的功能可以帮助到我们,我们可以通过不同的场景运用不同的执 ...
- SpringCloud Zuul2.X网关实现服务熔断降级(复制即用)
版本: <properties> <spring-boot.version>.RELEASE</spring-boot.version> <spring-cl ...
- Redis面试篇 -- 如何保证缓存与数据库的双写一致性?
如果不是严格要求“缓存和数据库”必须保证一致性的话,最好不要做这个方案:即 读请求和写请求串行化,串到一个内存队列里面去.串行化可以保证一定不会出现不一致的情况,但会导致系统吞吐量大幅度降低. 解决这 ...
- ASP.NET底层原理
上图基本上演示了IIS 6整个处理过程.在User Mode下,http.sys接收到一个基于aspx的http request,然后它会根据IIS中的Metabase查看该基于该Request的Ap ...
- C编程小结1
1. ‘\0’表示字符串结束符 2. 变量之间互相赋值一定要考虑他们的数据类型,要强制转换匹配上了或者进行一些处理才能赋值,同时读程序的时候也要注意这一点,否则可能看不懂.如: sData[0]=wD ...
- MySQL——my.cnf参数设置说明
以下为个人总结的MySQL配置文件参数说明,如有错误,烦请大佬们留言指正,本人将第一时间修改.2019-12-10 12:32:08 [mysqld] server- # Mysql唯一标识,一个集群 ...
- [PHP] socket客户端时的超时问题
连接socket分为连接超时和读取超时 $sock=stream_socket_client("www.google.com:80", $errno,$errstr,2); ...
- [译]Vulkan教程(22)创建顶点buffer
[译]Vulkan教程(22)创建顶点buffer Vertex buffer creation 创建顶点buffer Introduction 入门 Buffers in Vulkan are re ...
- linux-在指定路径下查询文件夹是否存在
我们常常在Linux下去查找文件 find / -name 'test.py' # 在根目录下查找名为test.py的文件 但是如果用查找文件的方式去查找文件夹的话,是查不到的 find / -max ...
- 用了 Lambda 之后,发现可以忘记设计模式了
设计模式是过去的一些好的经验和套路的总结,但是好的语言特性可以让开发者不去考虑这些设计模式.面向对象常见的设计模式有策略模式.模板方法.观察者模式.责任链模式以及工厂模式,使用Lambda表达式(函数 ...