mirror of
https://github.com/chillerlan/php-qrcode.git
synced 2026-09-01 13:08:14 +00:00
✨
This commit is contained in:
@@ -9,19 +9,22 @@ namespaced, cleaned up, improved and other stuff.
|
||||
[![Coverage][coverage-badge]][coverage]
|
||||
[![Scrunitizer][scrutinizer-badge]][scrutinizer]
|
||||
[![packagist][downloads-badge]][downloads]
|
||||
[![paypal][donate-badge]][donate]
|
||||
|
||||
[packagist-badge]: https://img.shields.io/packagist/v/chillerlan/php-qrcode.svg
|
||||
[packagist-badge]: https://img.shields.io/packagist/v/chillerlan/php-qrcode.svg?style=flat-square
|
||||
[packagist]: https://packagist.org/packages/chillerlan/php-qrcode
|
||||
[license-badge]: https://img.shields.io/packagist/l/chillerlan/php-qrcode.svg
|
||||
[license-badge]: https://img.shields.io/packagist/l/chillerlan/php-qrcode.svg?style=flat-square
|
||||
[license]: https://github.com/codemasher/php-qrcode/blob/master/LICENSE
|
||||
[travis-badge]: https://img.shields.io/travis/codemasher/php-qrcode.svg
|
||||
[travis-badge]: https://img.shields.io/travis/codemasher/php-qrcode.svg?style=flat-square
|
||||
[travis]: https://travis-ci.org/codemasher/php-qrcode
|
||||
[coverage-badge]: https://img.shields.io/codecov/c/github/codemasher/php-qrcode.svg
|
||||
[coverage-badge]: https://img.shields.io/codecov/c/github/codemasher/php-qrcode.svg?style=flat-square
|
||||
[coverage]: https://codecov.io/github/codemasher/php-qrcode
|
||||
[scrutinizer-badge]: https://img.shields.io/scrutinizer/g/codemasher/php-qrcode.svg
|
||||
[scrutinizer-badge]: https://img.shields.io/scrutinizer/g/codemasher/php-qrcode.svg?style=flat-square
|
||||
[scrutinizer]: https://scrutinizer-ci.com/g/codemasher/php-qrcode
|
||||
[downloads-badge]: https://img.shields.io/packagist/dt/chillerlan/php-qrcode.svg
|
||||
[downloads-badge]: https://img.shields.io/packagist/dt/chillerlan/php-qrcode.svg?style=flat-square
|
||||
[downloads]: https://packagist.org/packages/chillerlan/php-qrcode/stats
|
||||
[donate-badge]: https://img.shields.io/badge/donate-paypal-ff33aa.svg?style=flat-square
|
||||
[donate]: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=WLYUNAT9ZTJZ4
|
||||
|
||||
## Documentation
|
||||
|
||||
@@ -119,19 +122,28 @@ foreach($matrix->matrix() as $y => $row){
|
||||
}
|
||||
```
|
||||
|
||||
#### Authenticator example
|
||||
[codemasher/php-googleauth](https://github.com/codemasher/php-googleauth) features creation of `otpauth://` URIs for use with most mobile authenticators:
|
||||
#### Authenticator trait
|
||||
This library includes [codemasher/php-authenticator](https://github.com/codemasher/php-authenticator) to create `otpauth://` QR Codes for use with mobile authenticators, all in a single trait:
|
||||
```php
|
||||
use chillerlan\GoogleAuth\Authenticator;
|
||||
use chillerlan\QRCode\{QRCode, QROptions, Traits\QRAuthenticator};
|
||||
|
||||
$authenticator = new Authenticator;
|
||||
class MyAuthenticatorClass{
|
||||
use QRAuthenticator;
|
||||
|
||||
$secret = $authenticator->createSecret(); // -> save this with the userdata
|
||||
$data = $authenticator->getUri($secret, 'test', 'smiley.codes');
|
||||
public function getQRCode(){
|
||||
|
||||
// data fetched from wherever
|
||||
$this->authenticatorSecret = 'SECRETTEST234567';
|
||||
$label = 'my label';
|
||||
$issuer = 'example.com';
|
||||
|
||||
// set QROptions options if needed
|
||||
$this->qrOptions = new QROptions(['outputType' => QRCode::OUTPUT_MARKUP_SVG]);
|
||||
|
||||
$qr = $qrcode->render($data);
|
||||
return $this->getURIQRCode($label, $issuer);
|
||||
}
|
||||
|
||||
// do stuff
|
||||
}
|
||||
```
|
||||
|
||||
Have a look [in this folder](https://github.com/codemasher/php-qrcode/tree/master/examples) for some more usage examples.
|
||||
@@ -214,8 +226,9 @@ Instead of bloating your code you can simply create your own output interface by
|
||||
class MyCustomOutput extends QROutputAbstract{
|
||||
|
||||
// inherited from QROutputAbstract
|
||||
protected $matrix; // QRMatrix
|
||||
protected $options; // MyCustomOptions or QROptions
|
||||
protected $matrix; // QRMatrix
|
||||
protected $moduleCount; // length/width of the matrix
|
||||
protected $options; // MyCustomOptions or QROptions
|
||||
|
||||
// optional constructor
|
||||
public function __construct(MyCustomOptions $options = null){
|
||||
@@ -231,11 +244,10 @@ class MyCustomOutput extends QROutputAbstract{
|
||||
// QROutputInterface::dump()
|
||||
public function dump(){
|
||||
$output = '';
|
||||
$size = $this->matrix->size();
|
||||
|
||||
for($row = 0; $row < $size; $row++){
|
||||
for($col = 0; $col < $size; $col++){
|
||||
$output .= (string)(int)$this->matrix->check($col, $row);
|
||||
for($row = 0; $row < $this->moduleCount; $row++){
|
||||
for($col = 0; $col < $this->moduleCount; $col++){
|
||||
$output .= (int)$this->matrix->check($col, $row);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -287,6 +299,47 @@ name | description
|
||||
`ECC_L`, `ECC_M`, `ECC_Q`, `ECC_H`, | ECC-Level: 7%, 15%, 25%, 30% in `QROptions::$eccLevel`
|
||||
`DATA_NUMBER`, `DATA_ALPHANUM`, `DATA_BYTE`, `DATA_KANJI` | `QRDataInterface::$datamode`
|
||||
|
||||
#### `QROptions` properties
|
||||
property | type | default | allowed | description
|
||||
-------- | ---- | ------- | ------- | -----------
|
||||
`$version` | int | `QRCode::VERSION_AUTO` | 1...40 | the [QR Code version number](http://www.qrcode.com/en/about/version.html)
|
||||
`$versionMin` | int | 1 | 1...40 | Minimum QR version (if `$version = QRCode::VERSION_AUTO`)
|
||||
`$versionMax` | int | 40 | 1...40 | Maximum QR version (if `$version = QRCode::VERSION_AUTO`)
|
||||
`$eccLevel` | int | `QRCode::ECC_L` | `QRCode::ECC_X` | Error correct level, where X = L (7%), M (15%), Q (25%), H (30%)
|
||||
`$maskPattern` | int | `QRCode::MASK_PATTERN_AUTO` | 0...7 | Mask Pattern to use
|
||||
`$addQuietzone` | bool | true | - | Add a "quiet zone" (margin) according to the QR code spec
|
||||
`$quietzoneSize` | int | 4 | clamped to 0 ... `$matrixSize / 2` | Size of the quiet zone
|
||||
`$outputType` | string | `QRCode::OUTPUT_IMAGE_PNG` | `QRCode::OUTPUT_*` | built-in output type
|
||||
`$cachefile` | string | null | * | optional cache file path
|
||||
`$eol` | string | `PHP_EOL` | * | newline string (HTML, SVG, TEXT)
|
||||
`$scale` | int | 5 | * | size of a QR code pixel (SVG, IMAGE_*), HTML -> via CSS
|
||||
`$cssClass` | string | null | * | a common css class
|
||||
`$textDark` | string | '🔴' | * | string substitute for dark
|
||||
`$textLight` | string | '⭕' | * | string substitute for light
|
||||
`$imageBase64` | bool | true | - | whether to return the image data as base64 or raw like from `file_get_contents()`
|
||||
`$imageTransparent` | bool | true | - | toggle transparency (no jpeg support)
|
||||
`$imageTransparencyBG` | array | `[255, 255, 255]` | `[R, G, B]` | the RGB values for the transparent color, see [`imagecolortransparent()`](http://php.net/manual/function.imagecolortransparent.php)
|
||||
`$pngCompression` | int | -1 | -1 ... 9 | `imagepng()` compression level, -1 = auto
|
||||
`$jpegQuality` | int | 85 | 0 - 100 | `imagejpeg()` quality
|
||||
`$moduleValues` | array | array | array | Module values map, see [Custom output modules](#custom-output-modules)
|
||||
|
||||
#### `QRAuthenticator` trait methods
|
||||
method | return | description
|
||||
------ | ------ | -----------
|
||||
`getURIQRCode(string $label, string $issuer)` | `QRCode::render()` | protected
|
||||
`getAuthenticator()` | `Authenticator` | protected, returns an `Authenticator` object with the given settings
|
||||
|
||||
#### `QRAuthenticator` trait properties
|
||||
|
||||
property | type | default | allowed | description
|
||||
-------- | ---- | ------- | ------- | -----------
|
||||
`$qrOptions` | `QROptions` | - | - | a `QROptions` object for internal use
|
||||
`$authenticatorSecret` | string | - | * | the secret phrase to use for the QR Code
|
||||
`$authenticatorDigits` | int | 6 | 6...8 |
|
||||
`$authenticatorPeriod` | int | 30 | 10...60 |
|
||||
`$authenticatorMode` | string | `totp` | `totp`, `hotp` |
|
||||
`$authenticatorAlgo` | string | `SHA1` | `SHA1`, `SHA256`, `SHA512` |
|
||||
|
||||
#### `QRMatrix` methods
|
||||
method | return | description
|
||||
------ | ------ | -----------
|
||||
@@ -316,29 +369,6 @@ name | light (false) | dark (true) | description
|
||||
`M_LOGO` | 20 | - | space for a logo image (not used yet)
|
||||
`M_TEST` | 255 | 65280 | test value
|
||||
|
||||
#### `QROptions` properties
|
||||
property | type | default | allowed | description
|
||||
-------- | ---- | ------- | ------- | -----------
|
||||
`$version` | int | `QRCode::VERSION_AUTO` | 1...40 | the [QR Code version number](http://www.qrcode.com/en/about/version.html)
|
||||
`$versionMin` | int | 1 | 1...40 | Minimum QR version (if `$version = QRCode::VERSION_AUTO`)
|
||||
`$versionMax` | int | 40 | 1...40 | Maximum QR version (if `$version = QRCode::VERSION_AUTO`)
|
||||
`$eccLevel` | int | `QRCode::ECC_L` | `QRCode::ECC_X` | Error correct level, where X = L (7%), M (15%), Q (25%), H (30%)
|
||||
`$maskPattern` | int | `QRCode::MASK_PATTERN_AUTO` | 0...7 | Mask Pattern to use
|
||||
`$addQuietzone` | bool | true | - | Add a "quiet zone" (margin) according to the QR code spec
|
||||
`$quietzoneSize` | int | 4 | clamped to 0 ... `$matrixSize / 2` | Size of the quiet zone
|
||||
`$outputType` | string | `QRCode::OUTPUT_IMAGE_PNG` | `QRCode::OUTPUT_*` | built-in output type
|
||||
`$cachefile` | string | null | * | optional cache file path
|
||||
`$eol` | string | `PHP_EOL` | * | newline string (HTML, SVG, TEXT)
|
||||
`$scale` | int | 5 | * | size of a QR code pixel (SVG, IMAGE_*), HTML -> via CSS
|
||||
`$cssClass` | string | null | * | a common css class
|
||||
`$textDark` | string | '🔴' | * | string substitute for dark
|
||||
`$textLight` | string | '⭕' | * | string substitute for light
|
||||
`$imageBase64` | bool | true | - | whether to return the image data as base64 or raw like from `file_get_contents()`
|
||||
`$imageTransparent` | bool | true | - | toggle transparency (no jpeg support)
|
||||
`$imageTransparencyBG` | array | `[255, 255, 255]` | `[R, G, B]` | the RGB values for the transparent color, see [`imagecolortransparent()`](http://php.net/manual/function.imagecolortransparent.php)
|
||||
`$pngCompression` | int | -1 | -1 ... 9 | `imagepng()` compression level, -1 = auto
|
||||
`$jpegQuality` | int | 85 | 0 - 100 | `imagejpeg()` quality
|
||||
`$moduleValues` | array | array | array | Module values map, see [Custom output modules](#custom-output-modules)
|
||||
|
||||
### Notes
|
||||
The QR encoder, especially the subroutines for mask pattern testing, can cause high CPU load on increased matrix size.
|
||||
|
||||
Reference in New Issue
Block a user