APSB
APSB

Reputation: 587

Qrcode in laravel

i want to make qrcode, in there i can make it but i have something trouble when i want to change the format of qrcode to png file. but its only show symbol

here my view :

<?php echo QrCode::size(265)->generate($row->id) ?>

this qrcode i use :

"simplesoftwareio/simple-qrcode": "~1"

here my referance : https://www.simplesoftware.io/docs/simple-qrcode

can anyone help me ? or can someone give me solution ? before i change format to png : this before i change format

and this after i change it : after i change it

Upvotes: 3

Views: 21209

Answers (4)

Peter Hinds
Peter Hinds

Reputation: 171

I came to this page because I needed to create a PNG file to send inline in an email in laravel8.

I used the examples above in order to create the QR code as a png which worked brilliantly. I used the following code:

<img src="data:image/png;base64, {!! base64_encode(QrCode::format('png')->size(100)->generate('QrCode as PNG image!')) !!}" />

However a number of email services (including Gmail) do not display images that use inlined base64 as above. Instead, they require you to add the base64 image as an attachment to the email and then reference that attachment in the img src.

Thankfully laravel (I'm using laravel8) has a really cool function that does this for you, so my code ended up looking like this (which worked):

              <?php
                  $qrCodeAsPng = QrCode::format('png')->size(500)->generate("my text for the QR code");
              ?>
              <img src="{{ $message->embedData($qrCodeAsPng, 'nameForAttachment.png') }}" />

The $message variable is one that is in every blade that is being sent as an email in laravel. In my case I did not want to create an actual image on the server, but if you wanted to use an image that you had stored you would use $message->embed().

Upvotes: 0

Arati
Arati

Reputation: 109

In controller

$path = getenv('IMAGE_URL')."/img/logo.png";
$png = QrCode::format('png')->merge($path, .17, true)->size(300)->errorCorrection('H')->generate($data);
$png = base64_encode($png);

In blade file

<img src='data:image/png;base64,{{$png}}'>

Upvotes: 1

nasirkhan
nasirkhan

Reputation: 10583

There are more simple example available as well.

<img src="data:image/png;base64, {!! base64_encode(QrCode::format('png')->size(100)->generate('QrCode as PNG image!')) !!} ">

Upvotes: 8

SteD
SteD

Reputation: 14025

If you are formatting it as png file format, you need to include it with a <img> tag.

Taken from the documentation

//Inside of a blade template.
<img src="{!!$message->embedData(QrCode::format('png')->generate('Embed me into an e-mail!'), 'QrCode.png', 'image/png')!!}">

You can also do this:

$png = QrCode::format('png')->size(512)->generate(1);
$png = base64_encode($png);
echo "<img src='data:image/png;base64," . $png . "'>";

Upvotes: 9

Related Questions