我正在使用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>
看起来像这样(加普林):
现在,当我将其转换为png时:
convert -background none -density 9600 -resize 32x "myFile.svg" "myFile.png"
除了黑色边框外,我得到了完美的图像:
我几乎尝试过与color
或black
有关的imagemagick命令选项的每一种变体,但不幸的是,它从来没有出现我想要的东西-透明背景,纯白色路径(如所述通过填充SVG)。
有什么建议吗?
答案 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安装在正在处理图像的服务器上,并且似乎可以解决该问题,无需更改代码。