使用 PHP QR Code 生成二维码

使用 PHP 生成二维码常用两个库, PHPQRCode 和 PHP QR Code,本文介绍 PHP QR Code。

PHP QR Code encoder 是一个用于生成QR码的开源PHP库。它可以用来在PHP应用程序中生成二维码图片。以下是详细的说明,包括如何安装、基本使用以及一些高级配置。

安装

  1. 下载库文件:你可以从其官方网站(https://phpqrcode.sourceforge.net/)或GitHub仓库下载PHP QR Code encoder库。通常,你会得到一个压缩包,里面包含了几个PHP文件和目录结构。
  2. 解压文件:将下载的文件解压到你的项目的某个目录下,比如/libs/phpqrcode/。

基本使用

假设你已经将库文件放置到了/libs/phpqrcode/目录下,下面是生成一个简单二维码的例子:

<?php
// 包含必要的库文件
require_once 'libs/phpqrcode/phpqrcode.php';

// 要编码的数据
$data = 'https://www.example.com';

// 输出文件名
$filename = 'qrcode';

// 生成二维码图片
QRcode::png($data, false, 'L', 5, 2); // 第一个参数为false表示直接输出到浏览器

// 如果你想保存到文件,可以这样做:
// QRcode::png($data, 'output/'.$filename.'.png', 'L', 5, 2);
?>

这段代码会在浏览器中直接输出一个指向https://www.example.com的二维码图片。如果你想将二维码保存到文件中,可以将第一个参数设置为文件的完整路径。

参数说明

  • data:要编码的数据字符串。
  • filename:可选参数,如果提供,则保存为文件;如果不提供(设置为false),则输出到浏览器。
  • level:错误纠正级别,可以是L、M、Q或H,分别代表7%、15%、25%和30%的容错率。
  • size:模块大小,默认是4,可以设置为1到10。
  • margin:边距大小,默认是4,表示每个边有4个模块宽的空白区域。

 

更多示例

// 包含必要的库文件
require_once 'phpqrcode.php';

$value                = 'https://www.baidu.com'; //二维码内容
$errorCorrectionLevel = 'H'; //容错级别
$matrixPointSize      = 6; //生成图片大小
//生成二维码图片
$filename = 'output/' . microtime() . '.png';
\QRcode::png($value, $filename, $errorCorrectionLevel, $matrixPointSize, 2);

$logo = 'logo.png'; //准备好的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, 'output/qrcode1.png');
imagedestroy($QR);
imagedestroy($logo);
echo '< img src="output/qrcode1.png" alt="使用微信扫描支付" >';

收藏 0
评论
作品
LandV 主题
2024-09-02 01:12:05
PHP
PHP 异常处理
2024-09-09 22:14:00
生成中...
登录
注册
重置密码