使用textpath将ImageMagick SVG添加到JPG

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用textpath将ImageMagick SVG添加到JPG相关的知识,希望对你有一定的参考价值。

我有问题用php和Imagick将SVG代码导出到JPG,因为它包含标签'textpath'。完整的SVG是:

<svg id="svg_export" viewBox="0 0 800 533 " style=" pointer-events: none;">
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="533" version="1.1">
    <svg id="svg-tree">
        <svg id="tree_title">

            <path id="path_title" d="M 282 478 q 120 20 240 0" stroke="blue" stroke-width="1" fill="none"></path>

            <text class="tspan_title_tree" style="font-size: 20px; font-family: Times;">
                <textPath id="text_title_svg" startOffset="50%" href="#path_title">Título</textPath>
            </text>
        </svg>
        <svg id="cell_1" x="381" y="432" height="31" width="41">
            <text id="text_cell_1" font-size="7" x="50%" alignment-baseline="middle" y="10.640625">
                <tspan class="tspan_cell_tree" x="50%" dy="1.2em" font-family="Times" style="font-family: Times;">
                    Plain Text
                </tspan>
            </text>
        </svg>
    </svg>
</svg>

我用来导出图像的代码是:

    $im_cells = new Imagick();
    $im_cells->setBackgroundColor(new ImagickPixel('transparent'));
    $svg = $this->svgScale($this->svg, $width, $height);

    $im_cells->readImageBlob($svg);
    $im_cells->scaleImage($width, 0);
    $im_cells->setImageFormat("png32");

    $tree = new Imagick($this->getBackgroundFile());
    $tree->scaleImage($width, 0);

    $result = new Imagick();
    $result->newImage($width, $height, new ImagickPixel('red'), 'png');

    $result->addImage($tree);
    $result->addImage($im_cells);
    $result = $result->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);

    $result->writeImage(base_path('orders/image.jpg"));

导出后,它只显示曲线,没有文本。我已经读过,imagick不支持这个标签,所以有什么方法可以做到这一点吗?

我需要使用此工具,因为在此过程中我会覆盖不同的图层,但如果还有其他方法请告诉我,这将有所帮助。

我也试过安装Inkscape,但现在任何文本都可见。

提前致谢!

答案

我使用ImageMagick 6.9.10.11 Q16在我的Mac OSX Sierra上安装了Inkscape 0.92.3_4。我运行了以下命令:

convert -density 300 test.svg test.jpg

生成的图像显示微笑和一些模糊文本。

enter image description here

以上是关于使用textpath将ImageMagick SVG添加到JPG的主要内容,如果未能解决你的问题,请参考以下文章

在 Chrome 上转换后 SVG textPath 不可见

为啥 SVG textPath 不呈现? [开发工具中的 0x0]

R语言使用geomtextpath包的geom_textpath函数可视化行星轨道图并沿着轨道趋势添加文本标签(Planetary orbits)

R语言可视化函数曲线使用geomtextpath包的geom_textpath函数沿着函数曲线的趋势在指定位置添加函数公式(plotmath expressions )标签

Konva Textpath:它如何计算 x 和 y 位置

无法将已安装的字体与 ImageMagick 一起使用