Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Bacon Qr Code Laravel Package

bacon/bacon-qr-code

PHP QR code generator (ZXing encoder port) with multiple renderers/back ends: Imagick, SVG, EPS, and a separate GDLib renderer. Generate QR codes to files or output with customizable size/style via Renderer and Writer APIs.

View on GitHub
Deep Wiki
Context7

QR Code generator

PHP CI codecov Latest Stable Version Total Downloads License

Introduction

BaconQrCode is a port of QR code portion of the ZXing library. It currently only features the encoder part, but could later receive the decoder part as well.

As the Reed Solomon codec implementation of the ZXing library performs quite slow in PHP, it was exchanged with the implementation by Phil Karn.

Example usage

use BaconQrCode\Renderer\ImageRenderer;
use BaconQrCode\Renderer\Image\ImagickImageBackEnd;
use BaconQrCode\Renderer\RendererStyle\RendererStyle;
use BaconQrCode\Writer;

$renderer = new ImageRenderer(
    new RendererStyle(400),
    new ImagickImageBackEnd()
);
$writer = new Writer($renderer);
$writer->writeFile('Hello World!', 'qrcode.png');

Available image renderer back ends

BaconQrCode comes with multiple back ends for rendering images. Currently included are the following:

  • ImagickImageBackEnd: renders raster images using the Imagick library
  • SvgImageBackEnd: renders SVG files using XMLWriter
  • EpsImageBackEnd: renders EPS files

GDLib Renderer

GD library has so many limitations, that GD support is not added as backend, but as separated renderer. Use GDLibRenderer instead of ImageRenderer. These are the limitations:

  • Does not support gradient.
  • Does not support any curves, so you QR code is always squared.

Example usage:

use BaconQrCode\Renderer\GDLibRenderer;
use BaconQrCode\Writer;

$renderer = new GDLibRenderer(400);
$writer = new Writer($renderer);
$writer->writeFile('Hello World!', 'qrcode.png');

Known issues

ImagickImageBackEnd: white pixel artifacts

When using ImagickImageBackEnd, single white pixels may appear inside filled regions. This is most visible with margin 0 (where artifacts appear at the image edge), but can in theory occur at any position. The cause is a bug in ImageMagick's path fill rasterizer (GetFillAlpha in MagickCore/draw.c): an off-by-one error in the winding number calculation combined with an edge skipping bug in the scanline processing can incorrectly classify pixels as outside the polygon.

The bug cannot be reliably worked around in this library:

  • Canvas padding (rendering on a larger canvas and cropping) does not work because the required padding depends on the scale factor, path complexity, and ImageMagick's internal edge processing state. No fixed padding value is safe for all inputs.
  • Post-processing (scanning for and fixing isolated white pixels) risks corrupting legitimate rendering features such as curved module edges.

For artifact-free output, use SvgImageBackEnd or GDLibRenderer instead.

Development

To run unit tests, you need to have Node.js and the pixelmatch library installed. Running npm install will install this for you.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport