1. Go to this page and download the library: Download meyfa/php-svg library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
meyfa / php-svg example snippets
SVG\SVG;
use SVG\Nodes\Shapes\SVGRect;
// image with dimensions 100x100
$image = new SVG(100, 100);
$doc = $image->getDocument();
// blue 40x40 square at the origin
$square = new SVGRect(0, 0, 40, 40);
$square->setStyle('fill', '#0000FF');
$doc->addChild($square);
header('Content-Type: image/svg+xml');
echo $image;
// load from the local file system:
$image = SVG::fromFile('path/to/file.svg');
// or from the web (worse performance due to HTTP request):
$image = SVG::fromFile('https://upload.wikimedia.org/wikipedia/commons/8/8c/Even-odd_and_non-zero_winding_fill_rules.svg');
SVG\SVG;
use SVG\Nodes\Shapes\SVGCircle;
$image = new SVG(100, 100);
$doc = $image->getDocument();
// circle with radius 20 and green border, center at (50, 50)
$doc->addChild(
(new SVGCircle(50, 50, 20))
->setStyle('fill', 'none')
->setStyle('stroke', '#0F0')
->setStyle('stroke-width', '2px')
);
// rasterize to a 200x200 image, i.e. the original SVG size scaled by 2.
// the background will be transparent by default.
$rasterImage = $image->toRasterImage(200, 200);
header('Content-Type: image/png');
imagepng($rasterImage);
// white background
$rasterImage = $image->toRasterImage(200, 200, '#FFFFFF');
imagejpeg($rasterImage, 'path/to/output.jpg');
SVG\SVG;
// load a set of fonts from the "fonts" directory relative to the script directory
SVG::addFont(__DIR__ . '/fonts/Ubuntu-Regular.ttf');
SVG::addFont(__DIR__ . '/fonts/Ubuntu-Bold.ttf');
SVG::addFont(__DIR__ . '/fonts/Ubuntu-Italic.ttf');
SVG::addFont(__DIR__ . '/fonts/Ubuntu-BoldItalic.ttf');
$image = SVG::fromString('
<svg width="220" height="220">
<rect x="0" y="0" width="100%" height="100%" fill="lightgray"/>
<g font-size="15">
<text y="20">hello world</text>
<text y="100" font-weight="bold">in bold!</text>
<text y="120" font-style="italic">and italic!</text>
<text y="140" font-weight="bold" font-style="italic">bold and italic</text>
</g>
</svg>
');
header('Content-Type: image/png');
imagepng($image->toRasterImage(220, 220));
// Returns the number of children.
$numberOfChildren = $element->countChildren();
// Returns a child element by its index.
$firstChild = $element->getChild(0);
// Returns an array of matching child elements.
$childrenThatAreRects = $element->getElementsByTagName('rect');
// Returns an array of matching child elements.
$childrenWithClass = $element->getElementsByClassName('my-class-name');
// Append a child at the end.
$doc->addChild(new \SVG\Nodes\Shapes\SVGLine(0, 0, 10, 10));
// Insert a new child between the children at positions 0 and 1.
$g = new \SVG\Nodes\Structures\SVGGroup();
$doc->addChild($g, 1);
// Remove the second child. (equivalent to $doc->removeChild($g);)
$doc->removeChild(1);
// replace the first child with $g
$doc->setChild(0, $g);
$doc->getWidth();
// equivalent to: $doc->getAttribute('width')
$doc->setWidth('200px');
// equivalent to: $doc->setAttribute('width', '200px');
$rect->setRX('10%');
// equivalent to: $rect->setAttribute('rx', '10%');
error_reporting(E_ALL);
ini_set('display_errors', 1);
// ... rest of the script ...
bash
composer
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.