A PHP QR Code library based on the implementation by Kazuhiko Arase, namespaced, cleaned up, improved and other stuff. It also features a QR Code reader which is based on the ZXing library.
Attention: there is now also a javascript port: chillerlan/js-qrcode.
- Generation of Model 2 QR Codes, Version 1 to 40
- ECC Levels L/M/Q/H supported
- Mixed mode support (encoding modes can be mixed as needed within a QR symbol)
- Flexible, easily extensible output modules
- Built-in support for the following output formats:
- GdImage
- ImageMagick
- Markup types: SVG, HTML, etc.
- String types: JSON, plain text, etc.
- Encapsulated Postscript (EPS)
- PDF via FPDF
- QR Code reader (via GD and ImageMagick)
See the wiki for advanced documentation. An API documentation created with phpDocumentor can be found at https://chillerlan.github.io/php-qrcode/ (WIP).
- PHP 7.4+
ext-mbstring
- optional:
ext-gd
ext-imagick
with ImageMagick installedsetasign/fpdf
for the PDF output module
For the QRCode reader, either ext-gd
or ext-imagick
is required!
requires composer
via terminal:
composer require chillerlan/php-qrcode
via composer.json
:
{
"require": {
"php": "^7.4 || ^8.0",
"chillerlan/php-qrcode": "dev-main"
}
}
Note: replace dev-main
with a version constraint, e.g. ^4.3
- see releases for valid versions.
See the installation guide on the wiki for more info!
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 on the wiki. Also, have a look in the examples folder for some more usage examples.
Using the built-in QR Code reader is pretty straight-forward:
$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;
It's generally a good idea to wrap the reading in a try/catch block to handle any errors that may occur in the process.
- Drupal:
- Symfony
- WordPress:
- WoltLab Suite
- other uses:
Hi, please check out my other projects that are way cooler than qrcodes!
- php-oauth-core - an OAuth 1/2 client library along with a bunch of providers
- php-httpinterface - a PSR-7/15/17/18 implemetation
- php-database - a database client & querybuilder for MySQL, Postgres, SQLite, MSSQL, Firebird
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 word "QR Code" is a registered trademark of DENSO WAVE INCORPORATED
https://www.qrcode.com/en/faq.html#patentH2Title