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

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

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

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

第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. // 1. 生成原始的二维码(生成图片文件)
  2. function scerweima($url=''){
  3. require_once 'phpqrcode.php';
  4. $value = $url;                  //二维码内容
  5. $errorCorrectionLevel = 'L';    //容错级别
  6. $matrixPointSize = 5;           //生成图片大小
  7. //生成二维码图片
  8. $filename = 'qrcode/'.microtime().'.png';
  9. QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2);
  10. $QR = $filename;                //已经生成的原始二维码图片文件
  11. $QR = imagecreatefromstring(file_get_contents($QR));
  12. //输出图片
  13. imagepng($QR, 'qrcode.png');
  14. imagedestroy($QR);
  15. return '<img src="qrcode.png" alt="使用微信扫描支付">';
  16. }
  17. //调用查看结果
  18. echo scerweima('https://www.baidu.com');

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

  1. //2. 在生成的二维码中加上logo(生成图片文件)
  2. function scerweima1($url=''){
  3. require_once 'phpqrcode.php';
  4. $value = $url;                  //二维码内容
  5. $errorCorrectionLevel = 'H';    //容错级别
  6. $matrixPointSize = 6;           //生成图片大小
  7. //生成二维码图片
  8. $filename = 'qrcode/'.microtime().'.png';
  9. QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2);
  10. $logo = 'qrcode/logo.jpg';  //准备好的logo图片
  11. $QR = $filename;            //已经生成的原始二维码图
  12. if (file_exists($logo)) {
  13. $QR = imagecreatefromstring(file_get_contents($QR));        //目标图象连接资源。
  14. $logo = imagecreatefromstring(file_get_contents($logo));    //源图象连接资源。
  15. $QR_width = imagesx($QR);           //二维码图片宽度
  16. $QR_height = imagesy($QR);          //二维码图片高度
  17. $logo_width = imagesx($logo);       //logo图片宽度
  18. $logo_height = imagesy($logo);      //logo图片高度
  19. $logo_qr_width = $QR_width / 4;     //组合之后logo的宽度(占二维码的1/5)
  20. $scale = $logo_width/$logo_qr_width;    //logo的宽度缩放比(本身宽度/组合后的宽度)
  21. $logo_qr_height = $logo_height/$scale;  //组合之后logo的高度
  22. $from_width = ($QR_width - $logo_qr_width) / 2;   //组合之后logo左上角所在坐标点
  23. //重新组合图片并调整大小
  24. /*
  25. *  imagecopyresampled() 将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中
  26. */
  27. imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);
  28. }
  29. //输出图片
  30. imagepng($QR, 'qrcode.png');
  31. imagedestroy($QR);
  32. imagedestroy($logo);
  33. return '<img src="qrcode.png" alt="使用微信扫描支付">';
  34. }
  35. //调用查看结果
  36. echo scerweima1('https://www.baidu.com');

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

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

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

使用phpqrcode生成二维码的更多相关文章

  1. ThinkPHP框架整合phpqrcode生成二维码DEMO

    ThinkPHP框架发展到今天功能已经变得是非常强大了,但是ThinkPHP框架中没有二维码相关的库,因此我们可以通过整合phpqrcode来完成生成二维码的功能.想使用phpqrcode首先就要把p ...

  2. phpqrcode 生成二维码

    这个项目需要根据信息来自动生成二维码,到网上搜了下,发现php有生成二维码的类库phpqrcode,所以打算就用这个来生成二维码 从官网下载类库源码http://sourceforge.net/pro ...

  3. RHEL 5 安装phpqrcode生成二维码

    VMWARE中全新安装(默认)RHEL. 之后,yum 安装备apache/php 下载并上传phpqrcode 1.1.4版本,并将其解压至/var/www/html/phpqrcode (去掉ip ...

  4. thinkphp整合系列之phpqrcode生成二维码

    php生成二维码其实挺简单的:当然指的是使用qrcode类库: 因此关于是否要写这篇博客:我是犹豫了再三的: 不过最后还是决定写下吧:如果有童鞋急着用:就可以直接引了: 再个也可以作为即将写的文章微信 ...

  5. Thinkphp3.2结合phpqrcode生成二维码(含Logo的二维码),附案例

    首先,下载phpqrcode,将其解压到项目ThinkPHP\Library\Vendor目录下.Index_index.html(模板可自行配置) <form action="{:U ...

  6. 使用PHP类库PHPqrCode生成二维码

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

  7. php使用phpqrcode生成二维码

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

  8. php 使用phpqrcode生成二维码并上传到OSS

    一般情况调用phpqrcode第三方插件 会把生成的二维码图片保存到服务器,不保存服务器也会以header头的形式输出到浏览器,(我们不允许把图片文件保存的liunx服务器,只能保存到阿里云OSS存储 ...

  9. phpqrcode生成二维码

    这篇文章讲解得非常详细: https://www.jb51.net/article/136418.htm 备注一下: 如果遇到生成的二维码是一串乱码.只需要在代码最后加上 exit();即可解决,原理 ...

随机推荐

  1. 大数据以及Hadoop相关概念介绍

    一.大数据的基本概念 1.1.什么是大数据 大数据指的就是要处理的数据是TB级别以上的数据.大数据是以TB级别起步的.在计算机当中,存放到硬盘上面的文件都会占用一定的存储空间,例如: 文件占用的存储空 ...

  2. Managing DbContext the right way with Entity Framework 6: an in-depth guide by mehdime

    UPDATE: the source code for DbContextScope is now available on GitHub: DbContextScope on GitHub. A b ...

  3. .Net Discovery 系列之五--深入浅出.Net实时编译机制(上)

    欢迎阅读“.Net Discovery 系列”文章,本文将分上.下两部分为大家讲解.Net JIT方面的知识,敬请雅正. JIT(Just In Time简称JIT)是.Net边运行边编译的一种机制, ...

  4. 在ASP.NET MVC中使用Castle Windsor

    平常用Inject比较多,今天接触到了Castle Windsor.本篇就来体验其在ASP.NET MVC中的应用过程. Visual Studio 2012创建一个ASP.NET MVC 4网站. ...

  5. How to update jQuery Mobile in Dreamweaver CS6

    来源:http://wpguru.co.uk/2013/01/how-to-update-jquery-mobile-in-dreamweaver-cs6/ Since the release of ...

  6. Java移位运算符详解实例——左移位运算符>>、带符号的右移位运算符>>

    移位运算符也针对二进制的“位”,它主要包括:左移位运算符(<<).右移位运算符(>>>).带符号的右移位运算符(>>). 1.左移运算符左移运算符用“< ...

  7. 为python安装matplotlib模块

    matplotlib是python中强大的画图模块. 首先确保已经安装python,然后用pip来安装matplotlib模块. 进入到cmd窗口下,执行python -m pip install - ...

  8. centos 7 版本升级nginx

    1.首先下载对应最新版nginx wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ng ...

  9. 使用Numpy验证Google GRE的随机选择算法

    最近在读<SRE Google运维解密>第20章提到数据中心内部服务器的负载均衡方法,文章对比了几种负载均衡的算法,其中随机选择算法,非常适合用 Numpy 模拟并且用 Matplotli ...

  10. HTML5 Geolocation API地理定位整理(二)

    Geolocation 实例demo 1.使用watchPosition()监听客户端位置 var watchOne=null; if (navigator.geolocation) { //watc ...