# Configuration settings — PHP-QRCode main Manual

# Configuration settings

## version

QR Code version number

`1 ... 40` or `Version::AUTO` (default)

See also:

- `\chillerlan\QRCode\Common\Version`

## versionMin

Minimum QR version

if `QROptions::$version` is set to `Version::AUTO` (default: 1)

## versionMax

Maximum QR version

if `QROptions::$version` is set to `Version::AUTO` (default: 40)

## eccLevel

Error correct level

the constant `EccLevel::X` where `X` is:

- `L` => 7% (default)

- `M` => 15%

- `Q` => 25%

- `H` => 30%

alternatively you can just pass the letters L/M/Q/H (case-insensitive) to the magic setter

See also:

- `\chillerlan\QRCode\Common\EccLevel`

- github.com/chillerlan/php-qrcode/discussions/160

## maskPattern

Mask Pattern to use (no value in using, mostly for unit testing purposes)

`0 ... 7` or `MaskPattern::PATTERN_AUTO` (default)

See also:

- `\chillerlan\QRCode\Common\MaskPattern`

## addQuietzone

Add a “quiet zone” (margin) according to the QR code spec

See also:

- www.qrcode.com/en/howto/code.html

## quietzoneSize

Size of the quiet zone

internally clamped to `0 ... $moduleCount / 2` (default: 4)

## outputInterface

The FQCN of the `QROutputInterface` to use

## returnResource

Return the image resource instead of a render if applicable.

- `QRGdImage`: `resource` (PHP < 8), `GdImage`

- `QRImagick`: `Imagick`

- `QRFpdf`: `FPDF`

This option overrides/ignores other output settings, such as `QROptions::$cachefile` and `QROptions::$outputBase64`. (default: `false`)

See also:

- `\chillerlan\QRCode\Output\QROutputInterface::dump()`

## cachefile

Optional cache file path `/path/to/cache.file`

Please note that the `$file` parameter in `QRCode::render()` and `QRCode::renderMatrix()` takes precedence over the `QROptions::$cachefile` value. (default: `null`)

See also:

- `\chillerlan\QRCode\QRCode::render()`

- `\chillerlan\QRCode\QRCode::renderMatrix()`

## outputBase64

Toggle base64 data URI or raw data output (if applicable)

(default: `true`)

See also:

- `\chillerlan\QRCode\Output\QROutputAbstract::toBase64DataURI()`

## eol

Newline string

(default: `PHP_EOL`)

## bgColor

Sets the image background color (if applicable)

- `QRImagick`: defaults to `"white"`

- `QRGdImage`: defaults to `[255, 255, 255]`

- `QRFpdf`: defaults to blank internally (white page)

## invertMatrix

Whether to invert the matrix (reflectance reversal)

(default: `false`)

See also:

- `\chillerlan\QRCode\Data\QRMatrix::invert()`

## drawLightModules

Whether to draw the light (false) modules

(default: `true`)

## drawCircularModules

Specify whether to draw the modules as filled circles

a note for `GdImage` output:

if `QROptions::$scale` is less than 20, the image will be upscaled internally, then the modules will be drawn using `imagefilledellipse()` and then scaled back to the expected size

No effect in: `QREps`, `QRFpdf`, `QRMarkupHTML`

See also:

- php.net: `\imagefilledellipse()`

- github.com/chillerlan/php-qrcode/issues/23

- github.com/chillerlan/php-qrcode/discussions/122

## circleRadius

Specifies the radius of the modules when `QROptions::$drawCircularModules` is set to `true`

(default: 0.45)

## keepAsSquare

Specifies which module types to exclude when `QROptions::$drawCircularModules` is set to `true`

(default: `[]`)

## connectPaths

Whether to connect the paths for the several module types to avoid weird glitches when using gradients etc.

This option is exclusive to output classes that use the module collector `QROutputAbstract::collectModules()`, which converts the `$M_TYPE` of all modules to `QRMatrix::M_DATA` and `QRMatrix::M_DATA_DARK` respectively.

Module types that should not be added to the connected path can be excluded via `QROptions::$excludeFromConnect`.

Currentty used in `QREps` and `QRMarkupSVG`.

See also:

- `\chillerlan\QRCode\Output\QROutputAbstract::collectModules()`

- `\chillerlan\QRCode\QROptionsTrait::$excludeFromConnect`

- github.com/chillerlan/php-qrcode/issues/57

## excludeFromConnect

Specify which paths/patterns to exclude from connecting if `QROptions::$connectPaths` is set to `true`

See also:

- `\chillerlan\QRCode\QROptionsTrait::$connectPaths`

## moduleValues

Module values map

- `QRImagick`, `QRMarkupHTML`, `QRMarkupSVG`: #ABCDEF, cssname, rgb(), rgba()…

- `QREps`, `QRFpdf`, `QRGdImage`: `[R, G, B]` // 0-255

- `QREps`: `[C, M, Y, K]` // 0-255

See also:

- `\chillerlan\QRCode\Output\QROutputAbstract::setModuleValues()`

## addLogoSpace

Toggles logo space creation

See also:

- `\chillerlan\QRCode\QRCode::addMatrixModifications()`

- `\chillerlan\QRCode\Data\QRMatrix::setLogoSpace()`

## logoSpaceWidth

Width of the logo space

if only `QROptions::$logoSpaceWidth` is given, the logo space is assumed a square of that size

## logoSpaceHeight

Height of the logo space

if only `QROptions::$logoSpaceHeight` is given, the logo space is assumed a square of that size

## logoSpaceStartX

Optional horizontal start position of the logo space (top left corner)

## logoSpaceStartY

Optional vertical start position of the logo space (top left corner)

## scale

Pixel size of a QR code module

## imageTransparent

Toggle transparency

- `QRGdImage` and `QRImagick`: the given `QROptions::$transparencyColor` is set as transparent

See also:

- github.com/chillerlan/php-qrcode/discussions/121

## transparencyColor

Sets a transparency color for when `QROptions::$imageTransparent` is set to `true`.

Defaults to `QROptions::$bgColor`.

- `QRGdImage`: `[R, G, B]`, this color is set as transparent in `imagecolortransparent()`

- `QRImagick`: `"color_str"`, this color is set in `Imagick::transparentPaintImage()`

See also:

- php.net: `\imagecolortransparent()`

- php.net: `\Imagick::transparentPaintImage()`

## quality

Compression quality

The given value depends on the used output type:

- `QRGdImageBMP`: `[0...1]`

- `QRGdImageJPEG`: `[0...100]`

- `QRGdImageWEBP`: `[0...9]`

- `QRGdImagePNG`: `[0...100]`

- `QRImagick`: `[0...100]`

See also:

- php.net: `\imagebmp()`

- php.net: `\imagejpeg()`

- php.net: `\imagepng()`

- php.net: `\imagewebp()`

- php.net: `\Imagick::setImageCompressionQuality()`

## gdImageUseUpscale

Toggles the usage of internal upscaling when `QROptions::$drawCircularModules` is set to `true` and `QROptions::$scale` is less than 20

See also:

- `\chillerlan\QRCode\Output\QRGdImage::createImage()`

- github.com/chillerlan/php-qrcode/issues/23

## imagickFormat

Imagick output format

See also:

- php.net: `\Imagick::setImageFormat()`

- www.imagemagick.org/script/formats.php

## cssClass

A common css class

## svgAddXmlHeader

Whether to add an XML header line or not, e.g. to embed the SVG directly in HTML

`<?xml version="1.0" encoding="UTF-8"?>`

## svgDefs

Anything in the SVG `<defs>` tag

See also:

- developer.mozilla.org/en-US/docs/Web/SVG/Element/defs

## svgPreserveAspectRatio

Sets the value for the “preserveAspectRatio” on the `<svg>` element

See also:

- developer.mozilla.org/en-US/docs/Web/SVG/Attribute/preserveAspectRatio

## svgUseFillAttributes

Whether to use the SVG `fill` attributes

If set to `true` (default), the `fill` attribute will be set with the module value for the `<path>` element’s `$M_TYPE`. When set to `false`, the module values map will be ignored and the QR Code may be styled via CSS.

See also:

- developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill

## textLineStart

An optional line prefix, e.g. empty space to align the QR Code in a console

## jsonFlags

Sets the flags to use for the `json_encode()` call

See also:

- www.php.net/manual/json.constants.php

## jsonAsBooleans

Whether to return matrix values in JSON as booleans or `$M_TYPE` integers

## fpdfMeasureUnit

Measurement unit for `FPDF` output: `pt`, `mm`, `cm`, `in` (default: `pt`)

See also:

- `FPDF::__construct()`

## xmlStylesheet

Sets an optional XSLT stylesheet in the XML output

See also:

- developer.mozilla.org/en-US/docs/Web/XSLT

## readerUseImagickIfAvailable

Use Imagick (if available) when reading QR Codes

## readerGrayscale

Grayscale the image before reading

## readerInvertColors

Invert the colors of the image

## readerIncreaseContrast

Increase the contrast before reading

note that applying contrast works different in GD and Imagick, so mileage may vary