endroid / qr-code
Endroid QR Code
Requires
- php: ^8.1
- bacon/bacon-qr-code: ^3.0
Requires (Dev)
- ext-gd: *
- endroid/quality: dev-main
- khanamiryan/qrcode-detector-decoder: ^2.0.2
- setasign/fpdf: ^1.8.2
Suggests
- ext-gd: Enables you to write PNG images
- khanamiryan/qrcode-detector-decoder: Enables you to use the image validator
- roave/security-advisories: Makes sure package versions with known security issues are not installed
- setasign/fpdf: Enables you to use the PDF writer
- dev-main / 5.x-dev
- 5.1.0
- 5.0.9
- 5.0.8
- 5.0.7
- 5.0.6
- 5.0.5
- 5.0.4
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 4.8.5
- 4.8.4
- 4.8.3
- 4.8.2
- 4.8.1
- 4.8.0
- 4.7.0
- 4.6.1
- 4.6.0
- 4.5.2
- 4.5.1
- 4.5.0
- 4.4.9
- 4.4.8
- 4.4.7
- 4.4.6
- 4.4.5
- 4.4.4
- 4.4.3
- 4.4.2
- 4.4.1
- 4.4.0
- 4.3.5
- 4.3.4
- 4.3.3
- 4.3.2
- 4.3.1
- 4.3.0
- 4.2.2
- 4.2.1
- 4.2.0
- 4.1.4
- 4.1.3
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.x-dev
- 3.9.7
- 3.9.6
- 3.9.5
- 3.9.4
- 3.9.3
- 3.9.2
- 3.9.1
- 3.9.0
- 3.8.2
- 3.8.1
- 3.8.0
- 3.7.9
- 3.7.8
- 3.7.7
- 3.7.6
- 3.7.5
- 3.7.4
- 3.7.3
- 3.7.2
- 3.7.1
- 3.7.0
- 3.6.1
- 3.6.0
- 3.5.9
- 3.5.8
- 3.5.7
- 3.5.6
- 3.5.5
- 3.5.4
- 3.5.3
- 3.5.2
- 3.5.1
- 3.5.0
- 3.4.9
- 3.4.8
- 3.4.7
- 3.4.6
- 3.4.5
- 3.4.4
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.0
- 3.2.12
- 3.2.11
- 3.2.10
- 3.2.9
- 3.2.8
- 3.2.7
- 3.2.6
- 3.2.5
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.x-dev
- 2.5.1
- 2.5.0
- 2.4.0
- 2.3.4
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.11
- 2.0.10
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.x-dev
- 1.9.3
- 1.9.2
- 1.9.1
- 1.9.0
- 1.8.0
- 1.7.4
- 1.7.3
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.6
- 1.6.5
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.7
- 1.5.6
- 1.5.5
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.8
- 1.4.7
- 1.4.6
- 1.4.5
- 1.3.4
- 1.2.4
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.0
This package is auto-updated.
Last update: 2024-09-08 08:53:22 UTC
README
由 endroid 提供
此库可以帮助您快速生成二维码。使用 bacon/bacon-qr-code 生成矩阵,并使用 khanamiryan/qrcode-detector-decoder 验证生成的二维码。进一步扩展了Twig扩展、生成路由、工厂和Symfony包,以便于安装和配置。提供了不同的编写器,可以将二维码生成为PNG、SVG、EPS或二进制格式。
赞助商
安装
使用 Composer 安装库。如果您想生成图像,请确保已启用并配置了 GD扩展。
composer require endroid/qr-code
使用:使用构建器
use Endroid\QrCode\Builder\Builder; use Endroid\QrCode\Encoding\Encoding; use Endroid\QrCode\ErrorCorrectionLevel; use Endroid\QrCode\Label\LabelAlignment; use Endroid\QrCode\Label\Font\NotoSans; use Endroid\QrCode\RoundBlockSizeMode; use Endroid\QrCode\Writer\PngWriter; $result = Builder::create() ->writer(new PngWriter()) ->writerOptions([]) ->data('Custom QR code contents') ->encoding(new Encoding('UTF-8')) ->errorCorrectionLevel(ErrorCorrectionLevel::High) ->size(300) ->margin(10) ->roundBlockSizeMode(RoundBlockSizeMode::Margin) ->logoPath(__DIR__.'/assets/symfony.png') ->logoResizeToWidth(50) ->logoPunchoutBackground(true) ->labelText('This is the label') ->labelFont(new NotoSans(20)) ->labelAlignment(LabelAlignment::Center) ->validateResult(false) ->build();
使用:不使用构建器
use Endroid\QrCode\Color\Color; use Endroid\QrCode\Encoding\Encoding; use Endroid\QrCode\ErrorCorrectionLevel; use Endroid\QrCode\QrCode; use Endroid\QrCode\Label\Label; use Endroid\QrCode\Logo\Logo; use Endroid\QrCode\RoundBlockSizeMode; use Endroid\QrCode\Writer\PngWriter; use Endroid\QrCode\Writer\ValidationException; $writer = new PngWriter(); // Create QR code $qrCode = QrCode::create('Life is too short to be generating QR codes') ->setEncoding(new Encoding('UTF-8')) ->setErrorCorrectionLevel(ErrorCorrectionLevel::Low) ->setSize(300) ->setMargin(10) ->setRoundBlockSizeMode(RoundBlockSizeMode::Margin) ->setForegroundColor(new Color(0, 0, 0)) ->setBackgroundColor(new Color(255, 255, 255)); // Create generic logo $logo = Logo::create(__DIR__.'/assets/symfony.png') ->setResizeToWidth(50) ->setPunchoutBackground(true) ; // Create generic label $label = Label::create('Label') ->setTextColor(new Color(255, 0, 0)); $result = $writer->write($qrCode, $logo, $label); // Validate the result $writer->validateResult($result, 'Life is too short to be generating QR codes');
使用:处理结果
// Directly output the QR code header('Content-Type: '.$result->getMimeType()); echo $result->getString(); // Save it to a file $result->saveToFile(__DIR__.'/qrcode.png'); // Generate a data URI to include image data inline (i.e. inside an <img> tag) $dataUri = $result->getDataUri();
编写器选项
一些编写器提供编写器选项。每个可用的编写器选项都可以在编写器类中以WRITER_OPTION_为前缀的常量中找到。
PdfWriter
unit
:计量单位(默认:毫米)fpdf
:放置图像的PDF(默认:新的PDF)x
:图像偏移量(默认:0)y
:图像偏移量(默认:0)link
:一个URL或由AddLink()
返回的标识符。
PngWriter
compression_level
:压缩级别(0-9,默认:-1 = zlib默认)
SvgWriter
block_id
:用于外部引用的块元素ID(默认:block)exclude_xml_declaration
:排除XML声明(默认:false)exclude_svg_width_and_height
:排除宽度和高度(默认:false)force_xlink_href
:在兼容性问题时强制xlink命名空间(默认:false)compact
:使用path
元素创建,否则使用defs
和use
(默认:true)
WebPWriter
quality
:图像质量(0-100,默认:80)
您可以通过这种方式提供任何编写器选项。
use Endroid\QrCode\Writer\SvgWriter; $builder->writerOptions([ SvgWriter::WRITER_OPTION_EXCLUDE_XML_DECLARATION => true ]);
编码
如果您使用条码扫描仪,在读取生成的二维码时可能会遇到一些麻烦。根据您选择的编码,您将会有额外的数据量对应于ECI块。某些条码扫描仪未编程为解释此信息块。为了确保最大兼容性,您可以使用默认编码 ISO-8859-1
,这是条码扫描仪默认使用的编码(如果您的字符集支持,即没有中文字符)。
圆形块大小模式
默认情况下,块大小会四舍五入以保证图像清晰并提高可读性。但是,还有其他一些四舍五入变体。
margin (default)
:如果需要,二维码的大小会缩小,但最终图像的大小会因添加额外的边距而保持不变。enlarge
:当出现四舍五入差异时,二维码的大小和最终图像的大小都会增大。shrink
:当出现四舍五入差异时,二维码的大小和最终图像的大小都会缩小。none
:无四舍五入。此模式可用于块不需要四舍五入到像素的情况(例如SVG)。
可读性
二维码的可读性主要取决于大小、输入长度、纠错级别以及图像上的任何可能存在的徽标,因此您可以根据需要调整这些参数以获得最佳结果。您还可以检查 $qrCode->getRoundBlockSize() 的值,以查看块尺寸是否已四舍五入,从而使图像更加清晰和可读。请注意,四舍五入块尺寸可能会导致额外的填充以补偿四舍五入的差异。最后,编码(默认为 UTF-8 以支持大型字符集)在可能的情况下可以设置为 ISO-8859-1
以提高可读性。
验证生成的二维码
如果您需要特别确保生成的二维码可读且包含您请求的确切数据,您可以启用验证读取器,默认情况下它是禁用的。您可以通过构建器或直接在任何支持验证的写入器上完成此操作。请参阅上面的示例。
请注意,验证会影响性能,因此仅在有问题的情况下使用。
Symfony 集成
endroid/qr-code-bundle 将 QR 码库集成到 Symfony 中,以提供更好的体验。
- 配置默认值(如图像大小、默认写入器等)
- 支持多配置和通过别名注入
- 通过 URL 生成定义的配置的 QR 码,例如 /qr-code//Hello
- 使用专用函数直接从 Twig 生成 QR 码或 URL
阅读 bundle 文档 了解更多信息。
版本控制
版本号遵循 MAJOR.MINOR.PATCH 体系结构。向后兼容性破坏性更改将保持在最低限度,但请注意,这些更改可能会发生。锁定生产环境中的依赖关系并在升级代码时测试您的代码。
许可
此软件包受 MIT 许可证的约束。有关完整的版权和许可信息,请参阅与源代码一起分发的 LICENSE 文件。