通过命令行(Inkscape)更改SVG文件中的颜色

9

我有一个只有一种颜色的 .svg 文件。我想要将这个颜色改为另一种颜色,并通过命令行导出它。(我需要做大约100次,所以手动操作不可行。) 我目前使用 Inkscape。 我可以使用以下命令更改背景颜色并导出:

inkscape -f name.svt -e output_name.png -b #000080

但是我找不到更改普通颜色的方法。 我找到了这个动词:
org.inkscape.color.replacecolor

但是我不知道怎样添加我想要使用的颜色。有人说,无法向动词中添加变量,但是在这种情况下,该动词应该如何使用呢?

谢谢提前。

3个回答

11

这不是通用的解决方案,但由于SVG文件在内部只是XML,如果你的SVG文件足够简单,你可能可以通过简单的sed替换来做到。例如,以下代码将#000000(黑色)替换为#ffffff(白色):

sed -e "s/#000000/#ffffff/" input.svg >output.svg

这可能或可能不足以满足您的需求。


1
厉害的技巧。如果有帮助的话,我会补充一下这种方法可以将具有多种颜色的SVG转换为单色。例如,使用sed -e "s/#....../#000000/" input.svg > output.svg创建全黑SVG。 - hb_
如果没有设置颜色,就像互联网上的每个SVG图标一样,它将无法工作。 - Flash Thunder

0
虽然Inkscape是一个强大的工具,但我认为你在使用XSLT转换时会有更多的好运(掌控)。这将允许你对XML文件进行任何操作,而不是将文件解析为SVG图像并依赖于可用的API。你可以尝试使用像xsltproc这样的工具。

0
如果您有一个没有设置填充颜色的SVG文件,您可以使用以下方法:
sed -e "s/<svg/<svg fill=\"#ff0000\"/" input.svg > output.svg

这个例子将填充颜色更改为红色(#ff0000)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接