将svg转换为路径

时间:2019-03-27 04:02:26

标签: svg imagemagick

我正在使用macOs Mojave 10.14.3(18D109)

我的imagemagick详细信息(与brew一起安装)

convert -version
Version: ImageMagick 7.0.8-35 Q16 x86_64 2019-03-25 https://imagemagick.org
Copyright: © 1999-2019 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP 
Delegates (built-in): bzlib freetype heic jng jp2 jpeg lcms ltdl lzma openexr png tiff webp xml zlib

我有一个基本的svg(从W3Schools示例中采用):

<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" width="52" height="52" viewBox="0 0 52 52">
  <path fill="#fff" d="M22 0 L33 52 L12 42 Z">
</path>
</svg>

看起来像这样(加普林):

Gapplin view

现在,当我将其转换为png时:

convert -background none -density 9600 -resize 32x "myFile.svg" "myFile.png"

除了黑色边框外,我得到了完美的图像:

after conversion

我几乎尝试过与colorblack有关的imagemagick命令选项的每一种变体,但不幸的是,它从来没有出现我想要的东西-透明背景,纯白色路径(如所述通过填充SVG)。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

在ImageMagick中,可以使用以下三种工具中的任何一种来渲染SVG文件:Imagemagick的MSVG / XML,RSVG委托和Inkscape,通常是为了提高准确性。

我刚刚使用Inkscape 0.92.4尝试了以下命令,结果完全变成白色。如果安装了Inkscape,Imagemagick将自动使用它。但是在这种情况下,该文件无法正常工作。

magick test.svg test2.png


但是,如果我添加-background none,效果很好

magick -background none test.svg test2.png


我在透明背景上得到一个白色三角形。

或者如果我想要黑色背景

magick -background black test.svg test2.png


当我迫使Imagemagick使用MSVG时,我得到一个白色三角形,在白色背景上带有简单的黑色轮廓。因此,根据您的评论再次不正确。

magick MSVG:test.svg test2.png


如果我不添加-background,则将在透明背景上得到带有黑色轮廓的白色三角形。

magick -background none MSVG:test.svg test2.png


但是,如果我只想要黑色背景,那么

magick -background black MSVG:test.svg test2.png


然后,我在黑色背景上得到一个白色三角形。但是我怀疑白色三角形比它的黑色边框要小一些。

当我通过在proxys.xml文件中创建条目来强制使用RSVG 2.44.12时,我会在透明背景上得到一个白色三角形,我想这就是您想要的。

magick RSVG:test.svg test3.png


magick -background none RSVG:test.svg test3.png


您可以通过以下方式判断您的Imagemagick是否具有MSVG / XML或RSVG:

magick -list format


并查找以SVG开头的行。在该行的结尾,它将显示XML或RSVG。您无法使用这种方法来讲述Inkscape。

检查以查看SVG渲染器及其版本使用的是什么。也是libpng的版本。我的是1.6.36

从您的版本信息中,我看不到rsvp列出。因此,我假设您正在使用MSVG,但是如果您已在系统上安装了它,则可能是Inkscape。

我在使用Imagemagick 7.0.8.35 Q16的Mac OSX Sierra。

答案 1 :(得分:0)

我遇到了使用PHP将SVG转换为PNG的问题-路径周围有黑线。我将Inkscape安装在正在处理图像的服务器上,并且似乎可以解决该问题,无需更改代码。