侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

PHP基于phpqrcode类生成二维码的方法详解

php  /  管理员 发布于 7年前   185

本文实例讲述了PHP基于phpqrcode类生成二维码的方法。分享给大家供大家参考,具体如下:

使用PHP语言生成二维码,还是挺有难度的,当然调用生成二维码图片的接口(比如:联图网http://www.liantu.com/的接口)除外,如果自己写代码生成,真的无从下手。然而,我们可以使用phpqrcode这个现成的类文件,PHP二维码生成类库,利用它可以轻松生成二维码。

前期准备:

1.phpqrcode类文件下载,下载地址:https://sourceforge.net/projects/phpqrcode/
2.PHP环境必须开启支持GD2扩展库支持(一般情况下都是开启状态)

方法解读:

下载下来的类文件是一个压缩包,里边包含很多文件和演示程序,我们只需要里边的phpqrcode.php这一个文件就可以生成二维码了。它是一个多个类的集合文件,我们需要用到里边的QRcode类(第2963行)的png()方法(第3090行):

public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false){  $enc = QRencode::factory($level, $size, $margin);  return $enc->encodePNG($text, $outfile, $saveandprint=false);}

第1个参数$text:二维码包含的内容,可以是链接、文字、json字符串等等;
第2个参数$outfile:默认为false,不生成文件,只将二维码图片返回输出;否则需要给出存放生成二维码图片的文件名及路径;
第3个参数$level:默认为L,这个参数可传递的值分别是L(QR_ECLEVEL_L,7%)、M(QR_ECLEVEL_M,15%)、Q(QR_ECLEVEL_Q,25%)、H(QR_ECLEVEL_H,30%),这个参数控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比,也就是被覆盖的区域还能识别;
第4个参数$size:控制生成图片的大小,默认为4;
第5个参数$margin:控制生成二维码的空白区域大小;
第6个参数$saveandprint:保存二维码图片并显示出来,$outfile必须传递图片路径;

使用示例:

1. 生成二维码(生成图片文件)

// 1. 生成原始的二维码(生成图片文件)function scerweima($url=''){  require_once 'phpqrcode.php';  $value = $url;         //二维码内容  $errorCorrectionLevel = 'L';  //容错级别  $matrixPointSize = 5;      //生成图片大小  //生成二维码图片  $filename = 'qrcode/'.microtime().'.png';  QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2);  $QR = $filename;        //已经生成的原始二维码图片文件  $QR = imagecreatefromstring(file_get_contents($QR));  //输出图片  imagepng($QR, 'qrcode.png');  imagedestroy($QR);  return '';}//调用查看结果echo scerweima('https://www.baidu.com');

2. 在生成的二维码中加上logo(生成图片文件)

//2. 在生成的二维码中加上logo(生成图片文件)function scerweima1($url=''){  require_once 'phpqrcode.php';  $value = $url;         //二维码内容  $errorCorrectionLevel = 'H';  //容错级别  $matrixPointSize = 6;      //生成图片大小  //生成二维码图片  $filename = 'qrcode/'.microtime().'.png';  QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2);  $logo = 'qrcode/logo.jpg'; //准备好的logo图片  $QR = $filename;      //已经生成的原始二维码图  if (file_exists($logo)) {    $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 / 4;   //组合之后logo的宽度(占二维码的1/5)    $scale = $logo_width/$logo_qr_width;  //logo的宽度缩放比(本身宽度/组合后的宽度)    $logo_qr_height = $logo_height/$scale; //组合之后logo的高度    $from_width = ($QR_width - $logo_qr_width) / 2;  //组合之后logo左上角所在坐标点    //重新组合图片并调整大小    /*     * imagecopyresampled() 将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中     */    imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);  }  //输出图片  imagepng($QR, 'qrcode.png');  imagedestroy($QR);  imagedestroy($logo);  return '';}//调用查看结果echo scerweima1('https://www.baidu.com');

3. 生成二维码(不生成图片文件)

//3. 生成原始的二维码(不生成图片文件)function scerweima2($url=''){  require_once 'phpqrcode.php';  $value = $url;         //二维码内容  $errorCorrectionLevel = 'L';  //容错级别  $matrixPointSize = 5;      //生成图片大小  //生成二维码图片  $QR = QRcode::png($value,false,$errorCorrectionLevel, $matrixPointSize, 2);}//调用查看结果scerweima2('https://www.baidu.com');

前两种方法,每调用一次都会在本地生成一张二维码图片,第三种方法,不生成文件,会直接输出二维码到浏览器中。

PS:这里再为大家推荐两款二维码相关在线工具供大家参考使用:

在线生成二维码工具(加强版)
http://tools..net.cn/transcoding/jb51qrcode

在线二维码解码识别工具
http://tools..net.cn/transcoding/trans_qrcode

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:

  • 使用PHP生成二维码的两种方法(带logo图像)
  • php生成二维码的几种方式整理及使用实例
  • php生成二维码图片方法汇总
  • PHP微信开发之二维码生成类
  • PHP QRCODE生成彩色二维码的方法
  • php二维码生成以及下载实现
  • PHP基于phpqrcode生成带LOGO图像的二维码实例
  • PHP识别二维码的方法(php-zbarcode安装与使用)
  • PHP生成二维码与识别二维码的方法详解【附源码下载】


  • 上一条:
    PHP实现生成推广海报的方法详解
    下一条:
    PHP实现根据数组某个键值大小进行排序的方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(95个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客