| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- # Quickstart
- ## Import the library
- Import the main class(es) and include the autoloader (if necessary):
- ```php
- use chillerlan\QRCode\{QRCode, QROptions};
- require_once __DIR__.'/../vendor/autoload.php';
- ```
- ## Create your first QR Code
- We want to encode this URI for a mobile authenticator into a QRcode image:
- ```php
- $data = 'otpauth://totp/test?secret=B3JX4VCVJDVNXNZ5&issuer=chillerlan.net';
- $qrcode = (new QRCode)->render($data);
- printf('<img src="%s" alt="QR Code" />', $qrcode);
- ```
- ### Configuration
- Configuration using `QROptions`:
- ```php
- $options = new QROptions;
- $options->version = 7;
- $options->outputBase64 = false; // output raw image instead of base64 data URI
- header('Content-type: image/svg+xml'); // the image type is SVG by default
- echo (new QRCode($options))->render($data);
- ```
- See [Advanced usage](./Usage-Advanced-usage.md) for a more in-depth usage guide.
- Also, have a look [in the examples folder](https://github.com/chillerlan/php-qrcode/tree/main/examples) for some more usage examples.
- ## Reading QR Codes
- Using the built-in QR Code reader is pretty straight-forward:
- ```php
- try{
- $result = (new QRCode)->readFromFile('path/to/file.png'); // -> DecoderResult
- }
- catch(Throwable $exception){
- // handle exception...
- // throw ...
- }
- // you can now use the result instance...
- $content = $result->data;
- // ...or simply cast the result instance 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.
- ## Notes
- The QR encoder, especially the subroutines for mask pattern testing, can cause high CPU load on increased matrix size.
- You can avoid a part of this load by choosing a fast output module, like SVG.
- Oh hey and don't forget to sanitize any user input!
|