php生成带logo二维码方法小结


Posted in PHP onApril 08, 2016

一、使用的类库

1、phpqrcode(php库)

2、qrcode.js(javascript库)

二、phpqrcode的使用

只用php的类库,也就是二维码的生成在后台操作。因为要在后台生成带logo的二维码,那么首先必须将logo图片上传至服务器(在上传这里我用了webuploader)

phpqrcode使用方法:

首先下载phpqrcode:http://phpqrcode.sourceforge.net/

然后在使用之前记得引入phpqrcode.php文件

$value = $url;//二维码内容 
$errorCorrectionLevel = 'L';//设置容错级别 
$matrixPointSize = $size;//生成图片大小 
QRcode::png($value, 'public_files'.DIRECTORY_SEPARATOR .'code'.DIRECTORY_SEPARATOR .'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2);//生成二维码图片 无logo
$logo = $tar_path;//上传至服务器的logo图片 
$QR = 'public_files'.DIRECTORY_SEPARATOR .'code'.DIRECTORY_SEPARATOR .'qrcode.png';//已经生成的原始二维码图
 
if ($logo !== FALSE) {
  $QR = imagecreatefromstring(file_get_contents($QR));
  $logo = imagecreatefromstring(file_get_contents($logo));
  $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);
}
$name = time();
imagepng($QR, 'public_files'.DIRECTORY_SEPARATOR .'code'.DIRECTORY_SEPARATOR .$name.'.png');//输出带logo的二维码图片

三、qrcode.js的使用

使用qrcode.js在前端直接生成二维码,首先需要下载jquery.qrcode.js

qrcode的使用也很简单:

var length = size*80;//设置二维码大小
length = parseInt(length);
$("#code_img").qrcode({ //code_img是一个img标签的id
  render : "canvas",  //设置渲染方式,有table和canvas,使用canvas方式渲染性能相对来说比较好
  text : url,  //扫描二维码后显示的内容,可以直接填一个网址,扫描二维码后自动跳向该链接
  width : length,       //二维码的宽度
  height : length,
  background : "#ffffff",    //二维码的后景色
  foreground : "#000000",    //二维码的前景色
  src: $('#image').attr('src')       //二维码中间的图片
});

引入jquery.qrcode.js后再自己编写这段js代码,执行后二维码就可以显示处理了

主要是二维码中间的logo引用格式,一般取本地图片有两种格式:一种是本地URL,另一种是将图片转成base64格式

一开始我试用本地URL的格式来引用图片,发现只能引用与js文件统一目录下的图片,所以本地URL格式并不支持,于是我采用了后一种方式。

<input accept="image/*" type="file" id="file_input">

来上传选取本地图片,然后取其base64格式

var input = document.getElementById("file_input");
 
if(typeof FileReader==='undefined'){
  input.setAttribute('disabled','disabled');
}else{
  input.addEventListener('change',readFile,false);
}
 
function readFile(){
  var file = this.files[0];
  if(!/image\/\w+/.test(file.type)){
    alert("文件必须为图片!");
    return false;
  }
  var reader = new FileReader();
  reader.readAsDataURL(file);
  reader.onload = function(e){
    $('#image').attr('src',this.result);//image为img标签的id
  }
}

将文件读取为一串Data URL字符串,将小文件以一种特殊格式的URL地址直接读入页面。这个特殊格式就是base64

三、两个类库之间的对比

两个类库,一个在后台操作,一个直接在前端操作。

phpqrcode 生成二维码在后台操作,生成的图片保存在服务器。一般生成二维码都是直接保存到本地然后直接使用,很少会去服务器二次获取,所以采用phpqrcode的 话会使得服务器中的图片堆积,占用了不必要的空间,删除的话也会花费多余的开销。所以使用phpqrcode不适用于这种二维码生成工具。而且上传图片也 会产生多余的开销

qrcode.js直接在前端操作,上传图片直接保存在浏览器,直接在前端生成二维码,不需要任何后台的干涉,这样减少了不必要的开销,也不会在服务器造成图片的堆积而占用不必要的空间。

PHP 相关文章推荐
第四节 构造函数和析构函数 [4]
Oct 09 PHP
php中数据的批量导入(csv文件)
Oct 09 PHP
php URL跳转代码 减少外链
Jun 25 PHP
phpcms模块开发之swfupload的使用介绍
Apr 28 PHP
PHP文件大小格式化函数合集
Mar 10 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
php获取远程图片并下载保存到本地的方法分析
Oct 08 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
Oct 14 PHP
Yii 使用intervention/image拓展实现图像处理功能
Jun 22 PHP
php5.6.x到php7.0.x特性小结
Aug 17 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 #PHP
PHP中__autoload和Smarty冲突的简单解决方法
Apr 08 #PHP
初识ThinkPHP控制器
Apr 07 #PHP
PHP中PDO的事务处理分析
Apr 07 #PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
Apr 07 #PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 #PHP
PHP的PDO常用类库实例分析
Apr 07 #PHP
You might like
PHP中实现中文字符进制转换原理分析
2011/12/06 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
最短的IE判断代码
2011/03/13 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
2014/12/31 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
2019/11/05 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
详解Python中的__init__和__new__
2014/03/12 Python
Python中的Descriptor描述符学习教程
2016/06/02 Python
python入门基础之用户输入与模块初认识
2016/11/14 Python
flask中使用蓝图将路由分开写在不同文件实例解析
2018/01/19 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
python实现录音小程序
2020/10/26 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
什么是Smart Navigation?
2016/07/03 面试题
《明天,我们毕业》教学反思
2014/04/24 职场文书
高中学校对照检查材料
2014/08/31 职场文书
私人委托书格式
2014/09/10 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书
SQL之各种join小结详细讲解
2021/08/04 MySQL
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript