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.
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:
kanji (Japanese, Shift-JIS)
hanzi (simplified Chinese, GB2312/GB18030) as defined in GBT18284-2000
ECI support
numeric
alphanumeric
8-bit binary
13-bit double-byte:
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)
PHP 8.2+
ext-gd
for QRGdImage
based output
ext-imagick
with ImageMagick installed
ext-fileinfo
required by QRImagick
output
setasign/fpdf
for the PDF output module
intervention/image
for alternative GD/ImageMagick output
ext-mbstring
optional:
For the QR Code reader, either ext-gd
or ext-imagick
is required!
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 )!
See the installation guide for more info!
composer require chillerlan/php-qrcode
{ "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.
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.
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 eventuallytry{ $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!}
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)
I don't take responsibility for molten CPUs, misled applications, failed log-ins etc.. Use at your own risk!
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.
The word "QR Code" is a registered trademark of DENSO WAVE INCORPORATED
https://www.qrcode.com/en/faq.html#patentH2Title