【发布时间】:2020-06-02 11:29:42
【问题描述】:
我尝试使用 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();
【问题讨论】: