使用 PHP QR Code 生成二维码
像素鱼丸
2024-09-06
906

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

收藏
打赏
Lander 企业主题
上一篇
PHP 异常处理
下一篇
像素鱼丸
158 文章
2 评论
4 喜欢
最新文章

什么是幽灵按钮

“幽灵按钮”(Ghost Button)是一种常见的网页与移动应用 UI 设计模式,指背景透明(或半透明)、仅通过边框(border)和文字(text)定义的按钮,视觉上“若隐若现”,仿佛“幽灵”一般——因此得名。 核心特征: 无填充色(transparent background) 背景完全透明(或与父容器同色),不遮挡背后内容。 清晰的边框(通常 1–2px 实线) 如 border: 2px […]

付费资源下载时间限制有什么用?

这个功能确实挺常见的,它背后的逻辑其实不是“防君子”,而是“防小人”和“控成本”。有没有必要做,主要取决于你平台上的资源类型和你的运营阶段。 我们可以从三个角度来看看这个“10天有效期”到底有什么用: 增加倒卖和二次传播的成本(防黄牛) 这是最核心的意义。如果你的资源是虚拟商品(比如教程、源码、素材包),用户付一次钱理论上可以无限复制。 如果没有有效期: 一个人买了,转手挂到闲鱼或者别的群里卖,你 […]

测试产品

退款和取消订单接口要不要合并

很多开发者在设计初期的常见思路。将“取消”和“退款”分开,从功能上看似乎很清晰,但在实际的复杂业务场景中,这种设计可能会带来一些问题。 更主流和推荐的设计是提供一个统一的“申请取消订单”接口,由后端服务根据订单的当前状态,自动路由到不同的处理逻辑。  为什么统一接口是更好的选择? 前端逻辑简化: 对于用户而言,他的诉求只有一个:“我不想要这个订单了”。无论订单是否支付,他在前端点击的都是“取消订单 […]
生成中...
扫描二维码
扫描二维码
确认购买

您确定要购买此资源吗?

微信扫码支付

请使用微信扫描二维码完成支付

订单号:

等待支付...