# QRImagick

Class `QRImagick`: ImageMagick output, multiple supported image formats

Please follow the installation guides for your operating system:

- ImageMagick: imagemagick.org/script/download.php

- PHP `ext-imagick`: github.com/Imagick/imagick (Windows downloads)

- PHP Imagick by Example (github.com/Imagick/ImagickDemos)

## Example

See: ImageMagick example

Set the options:

    $options = new QROptions;

    $options->outputInterface     = QRImagick::class;
    $options->imagickFormat       = 'webp'; // e.g. png32, jpeg, webp
    $options->quality             = 90;
    $options->scale               = 20;
    $options->bgColor             = '#ccccaa';
    $options->imageTransparent    = true;
    $options->transparencyColor   = '#ccccaa';
    $options->drawLightModules    = true;
    $options->drawCircularModules = true;
    $options->circleRadius        = 0.4;
    $options->keepAsSquare        = [
    	QRMatrix::M_FINDER_DARK,
    	QRMatrix::M_FINDER_DOT,
    	QRMatrix::M_ALIGNMENT_DARK,
    ];
    $options->moduleValues        = [
    	QRMatrix::M_FINDER_DARK    => '#A71111', // dark (true)
    	QRMatrix::M_FINDER_DOT     => '#A71111', // finder dot, dark (true)
    	QRMatrix::M_FINDER         => '#FFBFBF', // light (false)
    	QRMatrix::M_ALIGNMENT_DARK => '#A70364',
    	QRMatrix::M_ALIGNMENT      => '#FFC9C9',
    	QRMatrix::M_VERSION_DARK   => '#650098',
    	QRMatrix::M_VERSION        => '#E0B8FF',
    ];

Render the output:

    $data = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ';
    $out  = (new QRCode($options))->render($data); // -> data:image/webp;base64,...

    printf('<img alt="%s" src="%s" />', $alt, $out);

Return the `Imagick` instance (will ignore other output options):

    $options->returnResource = true;

    /** @var \Imagick $imagick */
    $imagick = (new QRCode($options))->render($data);

    // do stuff with the Imagick instance...
    $imagick->scaleImage(150, 150, true);
    // ...

    // ...dump output
    $imagick->setImageFormat('png32');

    header('Content-type: image/png');

    echo $imagick->getImageBlob();

## Additional methods

method | return | description
--- | --- | ---
(protected) `drawImage()` | `void` | Creates the QR image via ImagickDraw
(protected) `module()` | `void` | Draws a single pixel at the given position
(protected) `setBgColor()` | `void` | Sets the background color
(protected) `setTransparencyColor()` | `void` | Sets the transparency color

## Options that affect this module

property | type
--- | ---
`$bgColor` | `mixed`
`$circleRadius` | `float`
`$drawCircularModules` | `bool`
`$drawLightModules` | `bool`
`$imageTransparent` | `bool`
`$imagickFormat` | `string`
`$keepAsSquare` | `array`
`$outputBase64` | `bool`
`$quality` | `int`
`$returnResource` | `bool`
`$scale` | `int`
`$transparencyColor` | `mixed`