gpt4 book ai didi

linux - ImageMagick SVG 到 PNG 不着色

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:03 31 4
gpt4 key购买 nike

我在我的 Mac 操作系统、Linux 64 位(2 个系统)和 RedHat 上安装了 ImageMagick。

我有一个包含以下内容的简单 SVG 文件:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="100px" height="100px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve">
<g>
<rect x="15" y="15" style="fill:none;" width="70" height="70"/>
<path d="M85,0H15H0v15v70v15h15h70h15V85V15V0H85z M85,85H15V15h70V85z"/>
</g>
</svg>

当我在 MAC OSX、RedHat 甚至我的 Linux 设置之一上转换它时,使用:

convert -fill 'rgb(255,0,0)' image.svg test.png

它正确地转换文件,即将它的颜色更改为红色。

但是,在其他 Linux 设置上它不会着色,而是保持黑色。

在所有系统上,我都从源代码安装了 ImageMagick。都有相同的版本。当我执行时,所有都给出 "rsvg-convert"-o "%o""%i":

convert -list delegate | grep 'svg => '

但我不知道为什么我的一个 Linux 设置不能像预期的那样工作。

最佳答案

-verbose 添加到您的转换命令中:

convert -verbose -fill 'rgba(255,0,0,0)' image.svg test.png

然后在您的每个系统上再次测试。比较每种情况的输出。

-verbose 在终端输出中报告哪个确切的 delegate 命令行将在后台运行以产生 ImageMagick 可以自行处理的最终格式。

例如,在我当前的系统 (OSX Mavericks) 上,因为我的设置与您的设置不同,所以我的转换不会将红色填充到 SVG 中,我在终端中看到了这一点:

"/opt/local/bin/inkscape" "/var/tmp/magick-31893m0w2-x4pHlPY" \
--export-eps="/var/tmp/magick-31893y4-KtfXirywn" \
--export-dpi="90,90" --export-background="rgb(100%,100%,100%)" \
--export-background-opacity="1" > \
"/var/tmp/magick-31893J8WlJy8Sn0uH" 2>&1
/var/tmp/magick-31893M9guCq3EvFL71 PNG 80x80 80x80+0+0 8-bit sRGB 351B 0.000u 0:00.000
/var/tmp/magick-31893y4-KtfXirywn PS 80x80 80x80+0+0 16-bit sRGB 351B 0.000u 0:00.000
img.svg=>/var/tmp/magick-31893y4-KtfXirywn PS 80x80 80x80+0+0 16-bit sRGB 351B 0.000u 0:00.000
img.svg=>out.png PS 80x80 80x80+0+0 8-bit sRGB 3c 463B 0.000u 0:00.000
[ghostscript library] -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT \
-dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 \
"-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 \
"-r72x72" -g80x80 "-sOutputFile=/var/tmp/magick-31893M9guCq3EvFL7%d" \
"-f/var/tmp/magick-31893VjGeCPBsW7zN" \
"-f/var/tmp/magick-31893OxqHgutvF5QZ"

如您所见,在我的例子中,Inkscape 作为代理将 SVG 转换为 EPS,然后 Ghostscript 将 EPS 转换为 PNG(带 alpha channel )......

关于linux - ImageMagick SVG 到 PNG 不着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29962624/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com