[英]How to convert svg to png and center text with PHP?
我尝试使用 PHP 和 imagick 将 svg 转换为 png。 此示例中的 svg 代码如下:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="128" height="128">
<path fill="#dc76e9" d="M0 0h16v16H0z"/>
<text x="8" y="8" fill="#fff" text-anchor="middle" dy=".3em" font-family="Arial" font-size="7">RO</text>
</svg>
结果应如下图所示:
但目前它看起来像这样:
我想将文本垂直居中。 字体系列目前对我来说并不重要。
这是我的转换代码:
<?php
$svg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="128" height="128">
<path fill="#dc76e9" d="M0 0h16v16H0z"/>
<text x="8" y="8" fill="#fff" text-anchor="middle" dy=".3em" font-family="Arial" font-size="7">RO</text>
</svg>';
$im = new Imagick();
$im->readImageBlob($svg);
$im->setImageBackgroundColor(new ImagickPixel('transparent'));
$im->setImageFormat("png24");
$im->resizeImage(128, 128, imagick::FILTER_LANCZOS, 1, true);
$im->writeImage("image.png");
$im->clear();
$im->destroy();
看起来 ImageMagick 正在使用自己的内部有限 MSVG 渲染引擎。 它会完成工作,但它不理解我们期望浏览器提供的大多数“基于网络”的指令。 在这种情况下, dy=".3em"
的em
部分。
我能想到的两个解决方案...
em
并手动更新 SVG。<text x="8" y="8" fill="#fff" text-anchor="middle" dy="1.3" font-family="Arial" font-size="7">RO</text>
<!-- ^^^^^^^^ -->
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.