QRMarkupSVG
Class QRMarkupSVG
: Scalable Vector Graphics (SVG) output
Example
See: ImageMagick example
Set the options:
$options = new QROptions;
$options->version = 7;
$options->outputType = QROutputInterface::MARKUP_SVG;
// 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) |
|
returns a string with all css classes for the current element |
(protected) |
|
returns the |
(protected) |
|
returns a path segment for a single module |
(protected) |
|
renders and returns a single |
(protected) |
|
returns one or more SVG |
Options that affect this module
property |
type |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Options that have no effect
property |
reason |
---|---|
|
background color can be achieved via CSS, attributes or the |
|
SVG is - similar to a HTML element - transparent by default |
|
N/A |
|
|