如何使用 PHP 实现生成二维码和条形码功能

生成二维码和条形码已成为常见的需求,不仅在商业场景中需要,也逐渐地应用在一些小型项目中,为用户提供更便捷的体验。 PHP 作为一种生动的编程语言,提供了很多可用的库和工具,能够实现生成二维码和条形码的功能。 本文将着重介绍使用 PHP 生成二维码和条形码相关的知识。

二维码和条形码的介绍

什么是二维码?

对于二维码,大家应该都不陌生,因为在现代社会已经成为了标配,甚至有些应用、商家选择只用二维码扫码支付,足见其在生活中的重要性。

二维码(QR Code,全称为Quick Response Code)是一种二维图案,具有高密度编码数据的功能,由日本Denso Wave公司于1994年开发。它可以在相机、扫码器等设备的帮助下,将一些非常重要的信息或数据纪录下来。 二维码由黑色正方形组成,依据编码的不同会有不同等级的数据纠错,从而有效降低二维码识读错误率。

什么是条形码?

条形码又称为一维码,是代表数字或字母的一组条纹和间隔,不同编码代表不同的信息,是商品被扫描枪扫描所读取的关键信息之一,能够快速找到相彼之间的相同点,具有快速辨识的功效。它通过肉眼或用条形码扫描读头自动识别的将所输入的电文翻译成数字或文字。

使用PHP生成二维码

在 PHP 中, 有很多开源库可以用来生成二维码,我们这里使用比较著名的 qrcode 库。

安装 qrcode 库可以使用 Composer ,只需要在需要的项目中使用以下命令:

composer require "endroid/qrcode": "^4.1"

接下来我们来看一下一个简单的测试案例:

use Endroid\QrCode\QrCode;

$qrCode = new QrCode('Life is too short to be generating QR codes');

header('Content-Type: '.$qrCode->getContentType());

echo $qrCode->writeString();

让我们看下上面的代码都在做什么:

- 创建一个新的二维码对象,传入了“Life is too short to be generating QR codes”作为数据;

- 获取 MIME 类型,通常是 image/png ;

- 将它直接输出到浏览器。

默认情况下,库使用足够大的尺寸来生成二维码。 但是,您也可以调用 setSize() 方法来手动设置它。

这里有一些示例代码,展示了一些其他可用选项的使用,比如设置颜色、背景、形状和标记。

use Endroid\QrCode\QrCode;

$qrCode = new QrCode('Life is too short to be generating QR codes');

$qrCode->setSize(300);

// Set advanced options

$qrCode->setWriterByName('png');

$qrCode->setMargin(10);

$qrCode->setEncoding('UTF-8');

$qrCode->setErrorCorrectionLevel(ErrorCorrectionLevel::HIGH());

$qrCode->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 255, 'a' => 0]);

$qrCode->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]);

$qrCode->setLabel('Scan the code', 12, null, LabelAlignment::CENTER());

$qrCode->setLogoPath(__DIR__.'/assets/images/symfony.png');

$qrCode->setLogoSize(150, 200);

$qrCode->setRoundBlockSize(true);

$qrCode->setValidateResult(false);

// Directly output the QR code

header('Content-Type: '.$qrCode->getContentType());

echo $qrCode->writeString();

在上面的代码和例子中,我们可以看到 qrcode 库提供了丰富的API来控制生成的二维码的不同方面。

使用PHP生成条形码

如果要生成条形码的话,推荐使用的是 Zend Barcode, 它是一个建立在 Zend Framework 之上的库,提供创建和读取各种类型的条码。

注意:由于 Zend Framework 已经停止更新,建议不要再使用 Zend Barcode.

可以使用 Composer 安装 Zend Barcode :

composer require "zendframework/zend-barcode"

下面是一个简单的测试案例,exports a barcode to the browser :

use Zend\Barcode\Barcode;

Barcode::render('codabar', 'image', ['text' => 'A134523567890B', 'barHeight' => 20]);

该代码创建一个 Codabar 条形码,设置文本为 A134523567890B(楼下小妹妹的号码),高度为20,然后将生成的图像直接在浏览器中呈现为图像。

总结

本文通过讲解二维码和条形码的介绍以及使用 PHP 来生成二维码和条形码的示例,让我们了解了如何使用 qrcode 库和 Zend Barcode 库来实现这两个功能。 需要注意的是,在使用任何库之前,都应该查看它们的文档,以确定其 API 和功能的适合用例。 如果您正在开发一个具有条形码或二维码功能的功能,使用这些库必将非常方便。

后端开发标签