QRMarkupSVG.md 3.6 KB

QRMarkupSVG

Class QRMarkupSVG: Scalable Vector Graphics (SVG) output.

Example

See: SVG example

Set the options:

$options = new QROptions;

$options->version              = 7;
$options->outputInterface      = QRMarkupSVG::class;
// if set to false, the light modules won't be rendered
$options->drawLightModules     = true;
$options->svgUseFillAttributes = true;
// draw the modules as circles isntead of squares
$options->drawCircularModules  = true;
$options->circleRadius         = 0.4;
// connect paths to avoid render glitches
// @see https://github.com/chillerlan/php-qrcode/issues/57
$options->connectPaths         = true;
// keep modules of these types as square
$options->keepAsSquare         = [
	QRMatrix::M_FINDER_DARK,
	QRMatrix::M_FINDER_DOT,
	QRMatrix::M_ALIGNMENT_DARK,
];
// add a gradient via the <defs> element
// @see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs
// @see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/linearGradient
$options->svgDefs             = '
	<linearGradient id="rainbow" x1="1" y2="1">
		<stop stop-color="#e2453c" offset="0"/>
		<stop stop-color="#e07e39" offset="0.2"/>
		<stop stop-color="#e5d667" offset="0.4"/>
		<stop stop-color="#51b95b" offset="0.6"/>
		<stop stop-color="#1e72b7" offset="0.8"/>
		<stop stop-color="#6f5ba7" offset="1"/>
	</linearGradient>
	<style><![CDATA[
		.dark{fill: url(#rainbow);}
		.light{fill: #eee;}
	]]></style>';

Render the output:

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

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

Additional methods

method return description
(protected) getCssClass(int $M_TYPE = 0) string returns a string with all css classes for the current element
(protected) getViewBox() string returns the value for the SVG viewBox attribute
(protected) header() string returns the <svg> header with the given options parsed
(protected) path(string $path, int $M_TYPE) string renders and returns a single <path> element
(protected) paths() string returns one or more SVG <path> elements
(protected) module(int $x, int $y, int $M_TYPE) string returns a path segment for a single module

Options that affect this class

property type
$circleRadius float
$connectPaths bool
$cssClass string
$drawCircularModules bool
$drawLightModules bool
$eol string
$excludeFromConnect array
$keepAsSquare array
$outputBase64 bool
$svgAddXmlHeader bool
$svgDefs string
$svgOpacity float
$svgPreserveAspectRatio string
$svgViewBoxSize int\|null
$svgUseFillAttributes bool