mirror of
https://github.com/chillerlan/php-qrcode.git
synced 2026-08-18 15:52:28 +00:00
93 lines
3.6 KiB
Markdown
93 lines
3.6 KiB
Markdown
# QRMarkupSVG
|
||
|
||
[Class `QRMarkupSVG`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QRMarkupSVG.php):
|
||
[Scalable Vector Graphics](https://developer.mozilla.org/en-US/docs/Glossary/SVG) (SVG) output.
|
||
|
||
|
||
## Example
|
||
|
||
See: [SVG example](https://github.com/chillerlan/php-qrcode/blob/main/examples/svg.php)
|
||
|
||
Set the options:
|
||
|
||
```php
|
||
$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:
|
||
|
||
```php
|
||
$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` |
|