QR-code is a machine-readable code consisting of an array of black and white squares, typically used for storing URLs or other information for reading by the camera on a smartphone. Let me show you how you can generate different types of QR codes in Laravel.
QR Codes in Laravel:
I set out to research more on generating QR codes in Laravel and I found that there aren’t many packages that could do this but there is one which is really good. simple-qrcode
is a Laravel package which is actually a wrapper around the [BaconQrCode](https://github.com/Bacon/BaconQrCode)
package for PHP.
Install the Package:
-
Get the
simple-qrcode
composer package into your Laravel project by running this in your project directory:composer require simplesoftwareio/simple-qrcode
- NOTE: If your Laravel version is 5.4 or less: - Add
SimpleSoftwareIO\\QrCode\\QrCodeServiceProvider::class
to theproviders
array in your config/app.php. - Add the alias'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class
to thealiases
array in config/app.php.
- NOTE: If your Laravel version is 5.4 or less: - Add
-
Reload composer auto-load cache:
composer dumpautoload
Basic usage:
-
You can quickly whip up a QR code that contains your specified string using
QrCode::generate("string")
method. -
Add a
qr-code
route to yourroutes/web.php
routes file.Route::get('qr-code', function () { return QrCode::size(500)->generate('Welcome to kerneldev.com!'); });
size()
method can be used to specify the size of the QR code. By default, the size is quite small so we will specify a size of 500.
-
Visit the route and you are able to see the QR code (Ex, localhost:8000/qr-code). Scan the QR code and you will see the text.
-
You can also display the QR code in Laravel’s Blade template:
{!! QrCode::generate('Welcome to kerneldev.com!'); !!}
Changing the Color of The QR Code:
-
You can also set your own color for the QR code pattern and the background using
color(red, green, blue)
andbackgroundColor(red, green, blue)
methods. You can find the RGB color codes here.Route::get('qr-code', function () { return QrCode::backgroundColor(255, 255, 0)->color(255, 0, 127) ->size(500)->generate('Welcome to kerneldev.com!'); });
- NOTE: Many QR code readers have difficulty in reading a coloured QR code hence I suggest you to stick with the non-coloured version if you want your QR code to work with most scanners.
- You can also change the margin around the QR code by using the
margin(5)
method. Lower the value lesser the margin.
Placing an image inside the QR code:
-
You can also place an image in the center of your QR code using the
merge('filename.png')
method and this function can only accept.png
files and you also need to format the response back topng
.Route::get('qr-code', function () { $pngImage = QrCode::format('png')->merge('ss.png', 0.3, true) ->size(500)->errorCorrection('H') ->generate('Welcome to kerneldev.com!'); return response($pngImage)->header('Content-type','image/png'); });
-
You can also wrap the image in an
<img>
tag in yourblade template
like this:{!! base64_encode(QrCode::format('png')->merge('ss.png', 0.3, true) ->size(500)->errorCorrection('H') ->generate('Welcome to kerneldev.com!')) !!} ">
-
Note that by default, the
merge()
function looks for the file specified inpublic
directory therefore be sure to place your png image there.
Encoding Special Data in Your QR Code:
You can encode QR codes in different formats so that most QR code readers will be able to suggest actions based on the QR code encoding type.
-
E-mail:
-
Automatically fill-in email address, subject and body of the email.
-
Syntax:
//Specify email address, subject and the body QrCode::email('sapnesh@kerneldev.com', 'Thank you for the QR code tutorial.', 'This was awesome!.'); //Specify subject and the body, let user enter the to_address QrCode::email(null, 'Hi there.', 'This is the message body.'); //Specify just email address QrCode::email('sapnesh@kerneldev.com');
-
-
Phone Number:
-
Open up the phone app and dial the specified phone number.
-
Syntax:
QrCode::phoneNumber($number);
-
Example:
QrCode::phoneNumber('776-004-1698');
-
-
SMS (Text Messages):
-
Open up the messaging app and fill-in phone number or the message body.
-
Syntax:
QrCode::SMS($number, $message);
-
Example:
//Specify just the phone number to send the message to QrCode::SMS('555-555-5555'); //Specify phone number as well as the message QrCode::SMS('555-555-5555', 'Body of the message');
-
-
Geo Coordinates:
-
Display the specified location in a map application.
-
Syntax:
QrCode::geo($latitude, $longitude);
-
Example:
QrCode::geo(13.3499, 74.798059);
-
It’s that easy to implement QR codes in Laravel! So what do you think? Please share your thoughts and ask any questions you might have in the comment section below.