Documentation

QROptions extends SettingsContainerAbstract
in package
uses QROptionsTrait, QRCodeReaderOptionsTrait

The QRCode settings container

Table of Contents

Properties

$addLogoSpace  : bool
Toggles logo space creation
$addQuietzone  : bool
Add a "quiet zone" (margin) according to the QR code spec
$bgColor  : mixed
Sets the image background color (if applicable)
$cachefile  : string|null
Optional cache file path `/path/to/cache.file`
$circleRadius  : float
Specifies the radius of the modules when `QROptions::$drawCircularModules` is set to `true`
$connectPaths  : bool
Whether to connect the paths for the several module types to avoid weird glitches when using gradients etc.
$cssClass  : string
A common css class
$drawCircularModules  : bool
Specify whether to draw the modules as filled circles
$drawLightModules  : bool
Whether to draw the light (false) modules
$eccLevel  : int
Error correct level
$eol  : string
Newline string
$excludeFromConnect  : array<string|int, int>
Specify which paths/patterns to exclude from connecting if `QROptions::$connectPaths` is set to `true`
$fpdfMeasureUnit  : string
Measurement unit for `FPDF` output: `pt`, `mm`, `cm`, `in` (default: `pt`)
$gdImageUseUpscale  : bool
Toggles the usage of internal upscaling when `QROptions::$drawCircularModules` is set to `true` and `QROptions::$scale` is less than 20
$imageTransparent  : bool
Toggle transparency
$imagickFormat  : string
Imagick output format
$invertMatrix  : bool
Whether to invert the matrix (reflectance reversal)
$jsonFlags  : int
Sets the flags to use for the `json_encode()` call
$keepAsSquare  : array<string|int, int>
Specifies which module types to exclude when `QROptions::$drawCircularModules` is set to `true`
$logoSpaceHeight  : int|null
Height of the logo space
$logoSpaceStartX  : int|null
Optional horizontal start position of the logo space (top left corner)
$logoSpaceStartY  : int|null
Optional vertical start position of the logo space (top left corner)
$logoSpaceWidth  : int|null
Width of the logo space
$maskPattern  : int
Mask Pattern to use (no value in using, mostly for unit testing purposes)
$moduleValues  : array<int, mixed>
Module values map
$outputBase64  : bool
Toggle base64 data URI or raw data output (if applicable)
$outputInterface  : string
The FQCN of the `QROutputInterface` to use
$quality  : int
Compression quality
$quietzoneSize  : int
Size of the quiet zone
$readerGrayscale  : bool
Grayscale the image before reading
$readerIncreaseContrast  : bool
Increase the contrast before reading
$readerInvertColors  : bool
Invert the colors of the image
$readerUseImagickIfAvailable  : bool
Use Imagick (if available) when reading QR Codes
$returnResource  : bool
Return the image resource instead of a render if applicable.
$scale  : int
Pixel size of a QR code module
$svgAddXmlHeader  : bool
Whether to add an XML header line or not, e.g. to embed the SVG directly in HTML
$svgDefs  : string
Anything in the SVG `<defs>` tag
$svgPreserveAspectRatio  : string
Sets the value for the "preserveAspectRatio" on the `<svg>` element
$svgUseFillAttributes  : bool
Whether to use the SVG `fill` attributes
$textLineStart  : string
An optional line prefix, e.g. empty space to align the QR Code in a console
$transparencyColor  : mixed
Sets a transparency color for when `QROptions::$imageTransparent` is set to `true`.
$version  : int
QR Code version number
$versionMax  : int
Maximum QR version
$versionMin  : int
Minimum QR version
$xmlStylesheet  : string|null
Sets an optional XSLT stylesheet in the XML output

Methods

clampLogoSpaceValue()  : int|null
clamp the logo space values between 0 and maximum length (177 modules at version 40)
set_circleRadius()  : void
clamp/set SVG circle radius
set_eccLevel()  : void
sets the ECC level
set_fpdfMeasureUnit()  : void
sets the FPDF measurement unit
set_logoSpaceHeight()  : void
clamp/set logo space height
set_logoSpaceStartX()  : void
clamp/set horizontal logo space start
set_logoSpaceStartY()  : void
clamp/set vertical logo space start
set_logoSpaceWidth()  : void
clamp/set logo space width
set_quietzoneSize()  : void
sets/clamps the quiet zone size
set_readerUseImagickIfAvailable()  : void
enables Imagick for the QR Code reader if the extension is available
set_version()  : void
sets/clamps the version number
set_versionMax()  : void
sets the maximum version number
set_versionMin()  : void
sets the minimum version number
setMinMaxVersion()  : void
clamp min/max version number

Properties

$bgColor

Sets the image background color (if applicable)

protected mixed $bgColor = null
  • QRImagick: defaults to "white"
  • QRGdImage: defaults to [255, 255, 255]
  • QRFpdf: defaults to blank internally (white page)

$cachefile

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

protected string|null $cachefile = null

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

Tags
see
QRCode::render()
see
QRCode::renderMatrix()

$circleRadius

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

protected float $circleRadius = 0.45

(default: 0.45)

$connectPaths

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

protected bool $connectPaths = false

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.

Tags
see
QROutputAbstract::collectModules()
see
QROptionsTrait::$excludeFromConnect
see
https://github.com/chillerlan/php-qrcode/issues/57

$cssClass

A common css class

protected string $cssClass = 'qrcode'

$drawCircularModules

Specify whether to draw the modules as filled circles

protected bool $drawCircularModules = false

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

Tags
see
imagefilledellipse()
see
https://github.com/chillerlan/php-qrcode/issues/23
see
https://github.com/chillerlan/php-qrcode/discussions/122

$drawLightModules

Whether to draw the light (false) modules

protected bool $drawLightModules = true

(default: true)

$eol

Newline string

protected string $eol = \PHP_EOL

(default: PHP_EOL)

$excludeFromConnect

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

protected array<string|int, int> $excludeFromConnect = []
Tags
see
QROptionsTrait::$connectPaths

$fpdfMeasureUnit

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

protected string $fpdfMeasureUnit = 'pt'
Tags
see
FPDF::__construct()

$keepAsSquare

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

protected array<string|int, int> $keepAsSquare = []

(default: [])

$logoSpaceHeight

Height of the logo space

protected int|null $logoSpaceHeight = null

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)

protected int|null $logoSpaceStartX = null

$logoSpaceStartY

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

protected int|null $logoSpaceStartY = null

$logoSpaceWidth

Width of the logo space

protected int|null $logoSpaceWidth = null

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

$maskPattern

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

protected int $maskPattern = \chillerlan\QRCode\Common\MaskPattern::AUTO

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

Tags
see
MaskPattern

$moduleValues

Module values map

protected array<int, mixed> $moduleValues = []
  • QRImagick, QRMarkupHTML, QRMarkupSVG: #ABCDEF, cssname, rgb(), rgba()...
  • QREps, QRFpdf, QRGdImage: [R, G, B] // 0-255
  • QREps: [C, M, Y, K] // 0-255
Tags
see
QROutputAbstract::setModuleValues()

$outputInterface

The FQCN of the `QROutputInterface` to use

protected string $outputInterface = \chillerlan\QRCode\Output\QRMarkupSVG::class

$quality

Compression quality

protected int $quality = -1

The given value depends on the used output type:

  • QRGdImageBMP: [0...1]
  • QRGdImageJPEG: [0...100]
  • QRGdImageWEBP: [0...9]
  • QRGdImagePNG: [0...100]
  • QRImagick: [0...100]
Tags
see
imagebmp()
see
imagejpeg()
see
imagepng()
see
imagewebp()
see
Imagick::setImageCompressionQuality()

$quietzoneSize

Size of the quiet zone

protected int $quietzoneSize = 4

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

$readerIncreaseContrast

Increase the contrast before reading

protected bool $readerIncreaseContrast = false

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

$readerUseImagickIfAvailable

Use Imagick (if available) when reading QR Codes

protected bool $readerUseImagickIfAvailable = false

$returnResource

Return the image resource instead of a render if applicable.

protected bool $returnResource = false
  • 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)

Tags
see
QROutputInterface::dump()

$svgAddXmlHeader

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

protected bool $svgAddXmlHeader = true

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

$svgUseFillAttributes

Whether to use the SVG `fill` attributes

protected bool $svgUseFillAttributes = true

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.

Tags
see
https://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

protected string $textLineStart = ''

$transparencyColor

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

protected mixed $transparencyColor = null

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()
Tags
see
imagecolortransparent()
see
Imagick::transparentPaintImage()

$version

QR Code version number

protected int $version = \chillerlan\QRCode\Common\Version::AUTO

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

Tags
see
Version

$versionMax

Maximum QR version

protected int $versionMax = 40

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

$versionMin

Minimum QR version

protected int $versionMin = 1

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

Methods

clampLogoSpaceValue()

clamp the logo space values between 0 and maximum length (177 modules at version 40)

protected clampLogoSpaceValue(int|null $value) : int|null
Parameters
$value : int|null
Return values
int|null

set_circleRadius()

clamp/set SVG circle radius

protected set_circleRadius(float $circleRadius) : void
Parameters
$circleRadius : float

set_eccLevel()

sets the ECC level

protected set_eccLevel(int|string $eccLevel) : void
Parameters
$eccLevel : int|string
Tags
throws
QRCodeException

set_fpdfMeasureUnit()

sets the FPDF measurement unit

protected set_fpdfMeasureUnit(string $unit) : void
Parameters
$unit : string
Tags
codeCoverageIgnore

set_logoSpaceHeight()

clamp/set logo space height

protected set_logoSpaceHeight(int|null $value) : void
Parameters
$value : int|null

set_logoSpaceStartX()

clamp/set horizontal logo space start

protected set_logoSpaceStartX(int|null $value) : void
Parameters
$value : int|null

set_logoSpaceStartY()

clamp/set vertical logo space start

protected set_logoSpaceStartY(int|null $value) : void
Parameters
$value : int|null

set_logoSpaceWidth()

clamp/set logo space width

protected set_logoSpaceWidth(int|null $value) : void
Parameters
$value : int|null

set_quietzoneSize()

sets/clamps the quiet zone size

protected set_quietzoneSize(int $quietzoneSize) : void
Parameters
$quietzoneSize : int

set_readerUseImagickIfAvailable()

enables Imagick for the QR Code reader if the extension is available

protected set_readerUseImagickIfAvailable(bool $useImagickIfAvailable) : void
Parameters
$useImagickIfAvailable : bool

set_version()

sets/clamps the version number

protected set_version(int $version) : void
Parameters
$version : int

set_versionMax()

sets the maximum version number

protected set_versionMax(int $version) : void
Parameters
$version : int

set_versionMin()

sets the minimum version number

protected set_versionMin(int $version) : void
Parameters
$version : int

setMinMaxVersion()

clamp min/max version number

protected setMinMaxVersion(int $versionMin, int $versionMax) : void
Parameters
$versionMin : int
$versionMax : int

        
On this page

Search results