【meyfa/php-svg】Pathのラスタライズのバグについて
結論を先に書けば、
「パス中の円弧のプロパティ SweepFlagが0の場合は、meyfa/php-svgは正常に動作しない」
となります。
現象
2019/07/02現在、meyfa/php-svgのパスにはバグが存在しています。
MDNによれば、
下記のSVGは、
<?xml version="1.0" standalone="no"?> <svg width="325px" height="325px" version="1.1" xmlns="http://www.w3.org/2000/svg"> <path d="M80 80 A 45 45, 0, 0, 0, 125 125 L 125 80 Z" fill="green"/> <path d="M230 80 A 45 45, 0, 1, 0, 275 125 L 275 80 Z" fill="red"/> <path d="M80 230 A 45 45, 0, 0, 1, 125 275 L 125 230 Z" fill="purple"/> <path d="M230 230 A 45 45, 0, 1, 1, 275 275 L 275 230 Z" fill="blue"/> </svg>
(MDNより引用)
通常は、下図のようになるはずです。
しかし、meyfa/php-svgの下記のようなコードを実行すると、下図のようになります(低解像度は私のプログラムのせいであり、meyfa/php-svgは関係ありません)。
<?php //中略 $svg = '[先のSVG]'; $image = SVG::fromString($svg); $rasterImage = $image->toRasterImage(325, 325); //以下保存処理 略
結論
これはMDNに参考にすると、
「パス中の円弧のプロパティ SweepFlagが0の場合は、meyfa/php-svgは正常に動作しない」
となるかと思います。