BaconQrCode Documentation

repository·main·Indexed 24 days ago

https://github.com/bacon/baconqrcode

A PHP port of the ZXing library's QR code encoder. It enables the generation of QR codes in PNG, SVG, and EPS formats using ImageRenderer with backends like ImagickImageBackEnd, SvgImageBackEnd, and EpsImageBackEnd, or via the GDLibRenderer for GD library support.

Tokens
641
Snippets
2
Records
4
Agent score
35%

What's inside baconqrcode

  1. Avoid white pixel artifacts in ImagickImageBackEnd

    main

    When using ImagickImageBackEnd, you may encounter single white pixel artifacts inside filled regions due to a bug in ImageMagick's path fill rasterizer. This is most visible when using a margin of 0.

    Workarounds are not recommended as canvas padding or post-processing can be unreliable or corrupt the rendering.

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

  2. Generate a QR code using GDLibRenderer

    main

    Because of limitations in the GD library (lack of gradient support and inability to render curves, resulting in squared QR codes), GD support is provided via a separate GDLibRenderer instead of the standard ImageRenderer.

    Use GDLibRenderer directly with a Writer to generate QR codes using the GD library.

    use BaconQrCode\Renderer\GDLibRenderer;
    use BaconQrCode\Writer;
    
    $renderer = new GDLibRenderer(400);
    $writer = new Writer($renderer);
    $writer->writeFile('Hello World!', 'qrcode.png');
  3. Generate a QR code using ImageRenderer

    main

    To generate raster images (like PNG) or vector files (like SVG/EPS), use the ImageRenderer. This requires a RendererStyle to define the size and an image backend (e.g., ImagickImageBackEnd or SvgImageBackEnd).

    1. Create a RendererStyle with the desired size.
    2. Choose an image backend.
    3. Instantiate ImageRenderer with the style and backend.
    4. Pass the renderer to a Writer instance.
    5. Call writeFile() to save the QR code.
    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');
  4. Available image renderer back ends

    main

    BaconQrCode provides several back ends for the ImageRenderer to support different file formats:

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