chillerlan / php-qrcode
A QR Code generator and reader with a user-friendly API. PHP 8.2+
Fund package maintenance!
Ko-Fi
Installs: 13 688 430
Dependents: 167
Suggesters: 5
Security: 0
Stars: 2 012
Watchers: 47
Forks: 301
Open Issues: 4
Requires
- php: ^7.4 || ^8.0
- ext-mbstring: *
- chillerlan/php-settings-container: ^2.1.6 || ^3.2.1
Requires (Dev)
- ext-fileinfo: *
- chillerlan/php-authenticator: ^4.3.1 || ^5.2.1
- phan/phan: ^5.4.5
- phpcompatibility/php-compatibility: 10.x-dev
- phpmd/phpmd: ^2.15
- phpunit/phpunit: ^9.6
- setasign/fpdf: ^1.8.2
- slevomat/coding-standard: ^8.15
- squizlabs/php_codesniffer: ^3.11
Suggests
- chillerlan/php-authenticator: Yet another Google authenticator! Also creates URIs for mobile apps.
- setasign/fpdf: Required to use the QR FPDF output.
- simple-icons/simple-icons: SVG icons that you can use to embed as logos in the QR Code
- dev-main
- v5.0.x-dev
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 5.0-beta
- 4.4.2
- 4.4.1
- 4.4.0
- v4.3.x-dev
- 4.3.4
- 4.3.3
- 4.3.2
- 4.3.1
- 4.3.0
- 4.2.0
- 4.1.0
- 4.0.1
- 4.0.0
- 3.4.1
- 3.4.0
- 3.3.0
- v3.2.x-dev
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- v2.0.x-dev
- 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.0.9
- 1.0.8
- dev-character-encoding-handler
- dev-qrmatrix-mtype-rework
- dev-v2.0.x-php5
This package is auto-updated.
Last update: 2024-11-22 18:25:50 UTC
README
A PHP QR Code generator based on the implementation by Kazuhiko Arase, namespaced, cleaned up, improved and other stuff.
It also features a QR Code reader based on a PHP port of the ZXing library.
Attention: there is now also a javascript port on NPM: @chillerlan/qrcode.
Overview
Features
- Creation of Model 2 QR Codes, Version 1 to 40
- ECC Levels L/M/Q/H supported
- Mixed mode support (encoding modes can be combined within a QR symbol). Supported modes:
- numeric
- alphanumeric
- 8-bit binary
- 13-bit double-byte:
- kanji (Japanese, Shift-JIS)
- hanzi (simplified Chinese, GB2312/GB18030) as defined in GBT18284-2000
- Flexible, easily extensible output modules, built-in support for the following output formats:
- GdImage (raster graphics: avif, bmp, gif, jpeg, png, webp)
- ImageMagick (multiple supported image formats)
- Markup types: SVG, HTML, etc.
- String types: JSON, plain text, etc.
- Encapsulated Postscript (EPS)
- PDF via FPDF
- QR Code reader (via GD and ImageMagick)
Requirements
- PHP 8.2+
ext-mbstring
- optional:
ext-gd
forQRGdImage
based outputext-imagick
with ImageMagick installedext-fileinfo
required byQRImagick
outputsetasign/fpdf
for the PDF output moduleintervention/image
for alternative GD/ImageMagick output
For the QR Code reader, either ext-gd
or ext-imagick
is required!
Documentation
- The user manual is at https://php-qrcode.readthedocs.io/ (sources)
- An API documentation created with phpDocumentor can be found at https://chillerlan.github.io/php-qrcode/
- The documentation for the
QROptions
container can be found here: chillerlan/php-settings-container
Important: Please use the examples from the branch that matches your installed php-qrcode version ( v4.x, v5.x, dev-main )!
Installation with composer
See the installation guide for more info!
Terminal
composer require chillerlan/php-qrcode
composer.json
{ "require": { "php": "^8.2", "chillerlan/php-qrcode": "dev-main#<commit_hash>" } }
Note: replace dev-main
with a version constraint, e.g. ^5.0
- see releases for valid versions.
Quickstart
We want to encode this URI for a mobile authenticator into a QRcode image:
$data = 'otpauth://totp/test?secret=B3JX4VCVJDVNXNZ5&issuer=chillerlan.net'; // quick and simple: echo '<img src="'.(new QRCode)->render($data).'" alt="QR Code" />';
Wait, what was that? Please again, slower! See Advanced usage in the manual. Also, have a look in the examples folder for some more usage examples.
Reading QR Codes
Using the built-in QR Code reader is pretty straight-forward:
// it's generally a good idea to wrap the reader in a try/catch block because it WILL throw eventually try{ $result = (new QRCode)->readFromFile('path/to/file.png'); // -> DecoderResult // you can now use the result instance... $content = $result->data; $matrix = $result->getMatrix(); // -> QRMatrix // ...or simply cast it to string to get the content: $content = (string)$result; } catch(Throwable $e){ // oopsies! }
Shameless advertising
Hi, please check out some of my other projects that are way cooler than qrcodes!
- js-qrcode - a javascript port of this library
- php-authenticator - a Google Authenticator implementation (see authenticator example)
- php-httpinterface - a PSR-7/15/17/18 implemetation
- php-oauth - an OAuth 1/2 client library, fully PSR-7/PSR-17/PSR-18 compatible
- php-database - a database client & querybuilder for MySQL, Postgres, SQLite, MSSQL, Firebird
- php-tootbot - a Mastodon bot library (see @dwil)
Disclaimer!
I don't take responsibility for molten CPUs, misled applications, failed log-ins etc.. Use at your own risk!
License notice
- Parts of this code are ported to PHP from the ZXing project and licensed under the Apache License, Version 2.0.
- The documentation is licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License.
Trademark Notice
The word "QR Code" is a registered trademark of DENSO WAVE INCORPORATED
https://www.qrcode.com/en/faq.html#patentH2Title