我想自动化inkscape命令“简化路径”。具体来说,我想要一个命令行工具,它将svg文件作为输入,将“简化路径”应用于图中的所有路径,并保存一个新的(较小的)svg文件。这可能使用inkscape吗?是否有一个免费的命令行工具(我正在使用linux)来完成这项工作?
答案 0 :(得分:4)
应该可以:
http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html
显示了如何从命令行调用inkscape的函数(称为“动词”)。要获取所有动词的列表,请在命令行上调用inkscape --verb-list
。您要找的是SelectionSimplify
。
因此,您必须编写一个小脚本来过滤svg中的每个id,并使用id调用inkscape。类似的东西:
inkscape filename.svg --select=pathID --verb=SelectionSimplify --verb=FileSave --verb=FileClose
我不知道您是否可以使用所有ID链接呼叫,您必须为每个SVG调用一次inkscape
答案 1 :(得分:1)
从Fabian的答案扩展到控制简化功能的阈值,我发现我需要制作一个假的主目录,其中包含一个包含我所需阈值的最小首选项文件。这是一个我刚刚放在一起的简单脚本。
simplify.sh:
#!/bin/bash
FILENAME=$1
THRESHOLD=$2
FAKEHOME=$(mktemp -d)
mkdir -p $FAKEHOME/.config/inkscape
cat > $FAKEHOME/.config/inkscape/preferences.xml <<EOF
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<inkscape
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1">
<group
id="options">
<group
id="simplifythreshold"
value="${THRESHOLD}" />
</group>
</inkscape>
EOF
HOME=$FAKEHOME inkscape $FILENAME --verb=EditSelectAll --verb=SelectionSimplify --verb=FileSave --verb=FileClose
#rm -rf $FAKEHOME
答案 2 :(得分:-1)
替代Inkscape
我使用SVGO得到了更好的结果(将文件从2.7 MB减少到350 KB)。
您可以将此在线服务用于单个文件:https://jakearchibald.github.io/svgomg/