mirror of
				https://gitee.com/zoujingli/ThinkAdmin.git
				synced 2025-11-04 21:52:10 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			133 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
QR Code
 | 
						|
=======
 | 
						|
 | 
						|
*By [endroid](http://endroid.nl/)*
 | 
						|
 | 
						|
[](https://packagist.org/packages/endroid/qrcode)
 | 
						|
[](http://travis-ci.org/endroid/QrCode)
 | 
						|
[](https://packagist.org/packages/endroid/qrcode)
 | 
						|
[](https://packagist.org/packages/endroid/qrcode)
 | 
						|
[](https://packagist.org/packages/endroid/qrcode)
 | 
						|
 | 
						|
This library based on QRcode Perl CGI & PHP scripts by Y. Swetake helps you generate images containing a QR code.
 | 
						|
 | 
						|
## Installation
 | 
						|
 | 
						|
Use [Composer](https://getcomposer.org/) to install the library.
 | 
						|
 | 
						|
``` bash
 | 
						|
$ composer require endroid/qrcode
 | 
						|
```
 | 
						|
 | 
						|
## Usage
 | 
						|
 | 
						|
```php
 | 
						|
use Endroid\QrCode\QrCode;
 | 
						|
 | 
						|
$qrCode = new QrCode();
 | 
						|
$qrCode
 | 
						|
    ->setText('Life is too short to be generating QR codes')
 | 
						|
    ->setSize(300)
 | 
						|
    ->setPadding(10)
 | 
						|
    ->setErrorCorrection('high')
 | 
						|
    ->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0])
 | 
						|
    ->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0])
 | 
						|
    ->setLabel('Scan the code')
 | 
						|
    ->setLabelFontSize(16)
 | 
						|
    ->setImageType(QrCode::IMAGE_TYPE_PNG)
 | 
						|
;
 | 
						|
 | 
						|
// now we can directly output the qrcode
 | 
						|
header('Content-Type: '.$qrCode->getContentType());
 | 
						|
$qrCode->render();
 | 
						|
 | 
						|
// save it to a file
 | 
						|
$qrCode->save('qrcode.png');
 | 
						|
 | 
						|
// or create a response object
 | 
						|
$response = new Response($qrCode->get(), 200, ['Content-Type' => $qrCode->getContentType()]);
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
## Symfony integration
 | 
						|
 | 
						|
Register the Symfony bundle in the kernel.
 | 
						|
 | 
						|
```php
 | 
						|
// app/AppKernel.php
 | 
						|
 | 
						|
public function registerBundles()
 | 
						|
{
 | 
						|
    $bundles = [
 | 
						|
        // ...
 | 
						|
        new Endroid\QrCode\Bundle\EndroidQrCodeBundle(),
 | 
						|
    ];
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
The default parameters can be overridden via the configuration.  
 | 
						|
Alpha channel available range is [0, 127] in foreground and background colors.
 | 
						|
 | 
						|
```yaml
 | 
						|
endroid_qr_code:
 | 
						|
    size: 100
 | 
						|
    padding: 10
 | 
						|
    extension: gif
 | 
						|
    error_correction_level: high
 | 
						|
    foreground_color: { r: 0, g: 0, b: 0, a: 0 }
 | 
						|
    background_color: { r: 255, g: 255, b: 255, a: 0 }
 | 
						|
    label: 'My label'
 | 
						|
    label_font_size: 16
 | 
						|
```
 | 
						|
 | 
						|
Now you can retrieve the factory as follows.
 | 
						|
 | 
						|
```php
 | 
						|
$factory = $this->get('endroid.qrcode.factory');
 | 
						|
$factory->createQrCode();
 | 
						|
```
 | 
						|
 | 
						|
Add the following section to your routing to be able to handle QR code URLs.
 | 
						|
This step can be skipped when you only use data URIs to display your images.
 | 
						|
 | 
						|
``` yml
 | 
						|
EndroidQrCodeBundle:
 | 
						|
    resource: "@EndroidQrCodeBundle/Controller/"
 | 
						|
    type:     annotation
 | 
						|
    prefix:   /qrcode
 | 
						|
```
 | 
						|
 | 
						|
After installation and configuration, QR codes can be generated by appending
 | 
						|
the QR code text to the url as mounted, followed by .png, .jpg or .gif.
 | 
						|
 | 
						|
## Twig extension
 | 
						|
 | 
						|
The bundle also provides a Twig extension for quickly generating QR code urls.
 | 
						|
Optional parameters are extension, size, padding and errorCorrectionLevel. When
 | 
						|
a parameter is omitted, the value in the bundle configuration is used.
 | 
						|
 | 
						|
``` twig
 | 
						|
<img src="{{ qrcode_url(message) }}" />
 | 
						|
<img src="{{ qrcode_url(message, { extension: 'png' }) }}" />
 | 
						|
<img src="{{ qrcode_url(message, { size: 150 }) }}" />
 | 
						|
```
 | 
						|
 | 
						|
You can also use the data URI helper to embed the QR code within your HTML
 | 
						|
instead of requiring a separate HTTP request to load your image.
 | 
						|
 | 
						|
``` twig
 | 
						|
<img src="{{ qrcode_data_uri(message, { size: 200, padding: 10 }) }}" />
 | 
						|
```
 | 
						|
 | 
						|
## Versioning
 | 
						|
 | 
						|
Version numbers follow the MAJOR.MINOR.PATCH scheme. Backwards compatibility
 | 
						|
breaking changes will be kept to a minimum but be aware that these can occur.
 | 
						|
Lock your dependencies for production and test your code when upgrading.
 | 
						|
 | 
						|
## License
 | 
						|
 | 
						|
This bundle is under the MIT license. For the full copyright and license
 | 
						|
information please view the LICENSE file that was distributed with this source code.
 |