使用 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="使用微信扫描支付" >';

收藏
评论
打赏
作品
LandV 企业官网主题
2024-09-02
PHP语言参考
PHP 异常处理
2024-09-09
飞翔的鱼丸
39305 阅读
82 发布
2 收藏
动态
FishV 主题 v1.21.0 发布
LandV 企业主题 v2.8.0 发布
MirageV 主题 v2.6.4 发布
FishV 主题 v1.14 发布
BotV 插件 v1.7.0 发布
MirageV 主题 v2.5 正式发布
LandV 企业主题 v2.6.0 发布
MirageV 主题 v2.6.0 发布
生成中...
真诚赞赏,手留余香
登录
注册
重置密码