我使用此命令成功地从您的链接转换了 SVG:
convert \
http://www.fileformat.info/info/unicode/char/00c1/latin_capital_letter_a_with_acute.svg \
latin_capital_letter_a_with_acute.png
这是结果,我觉得还可以:
我的 ImageMagick 版本是(根据convert -version):
版本:ImageMagick 6.9.0-0 Q16 x86_64 2014-12-06 http://www.imagemagick.org
版权所有:版权所有 (C) 1999-2014 ImageMagick Studio LLC
特点:DPC 模块
代表(内置): bzlib cairo djvu fftw fontconfig freetype gslib gvc \
jbig jng jp2 jpeg lcms lqr ltdl lzma openexr \
pangocairo png ps rsvg tiff webp wmf x xml zlib
然而,ImageMagick 本身并不是直接完成解释 SVG 的繁重工作。我的 ImageMagick 使用外部委托来实现这一点。通过将-verbose 设置添加到命令行,可以看到它的工作原理:
转换 -verbose letter_a_with_acute.svg letter_a_with_acute.png
"/opt/local/bin/inkscape" "/var/tmp/magick-12470O5QRRVap0Ub4" \
--export-eps="/var/tmp/magick-124705G1EV-reRRrb" --export-dpi="90,90" \
--export-background="rgb(100%,100%,100%)" --export-background-opacity="1" \
> "/var/tmp/magick-12470W9feuKm0JHUA" 2>&1
/var/tmp/magick-12470qEPdaNM3mKYw1 PNG 155x209 155x209+0+0 8 位 sRGB 3.04KB 0.000u 0:00.000
/var/tmp/magick-124705G1EV-reRRrb PS 155x209 155x209+0+0 16 位 sRGB 3.04KB 0.000u 0:00.000
letter_a_with_acute.svg=>/var/tmp/magick-124705G1EV-reRRrb PS 155x209 155x209+0+0 16 位 sRGB 3.04KB 0.000u 0:00.000
letter_a_with_acute.svg=>latin_capital_letter_a_with_acute.png PS 155x209 155x209+0+0 8 位 sRGB 17c 2.93KB 0.000u 0:00.000
[ghostscript 库] -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT \
-dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 \
"-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 \
“-r72x72”-g155x209“-sOutputFile=/var/tmp/magick-12470qEPdaNM3mKYw%d”\
“-f/var/tmp/magick-12470Xt3b3Qubkxx2”\
“-f/var/tmp/magick-12470VRcUz0MbmdiC”
您可以清楚地看到,convert 在两个不同的步骤中雇佣了两个代表来实现转换:
首先,它运行inkscape 命令。此命令将 SVG 导出为 EPS。
其次,它运行一个 Ghostscript 命令。此命令将 EPS 从第 1 步转换为最终的 PNG。
在上述两个步骤之间,它会运行一些其他命令,可能是identify,以便找出生成的 EPS 的尺寸。
换句话说,如果您无法正确设置 ImageMagick 委托以便他们为您处理 SVG 文件,您始终可以直接在命令行上使用 Inkscape 创建 PNG :
inkscape \
--without-gui \
--export-png=out.png \
--export-dpi="90,90" \
--export-background="rgb(100%,100%,100%)" \
--export-background-opacity="1" \
input.svg
查看结果,out.png,似乎它可能在字母周围使用了太多空白:
identify out.png
out.png PNG 744x1052 744x1052+0+0 8-bit sRGB 13.1KB 0.000u 0:00.000
这可以通过 ImageMagick 来纠正:
convert out.png -trim +repage trimmed.png
检查:
identify trimmed.png
trimmed.png PNG 193x260 193x260+0+0 8-bit sRGB 256c 3.53KB 0.000u 0:00.000