为svg自动化“简化路径”

我想自动化inkscape命令“简化路径”。 具体来说,我想要一个命令行工具,它将svg文件作为输入,将“简化路径”应用于图中的所有路径,并保存一个新的(较小的)svg文件。 这可能使用inkscape? 有没有一个免费的命令行工具(我使用的是Linux)来完成这项工作?


应该有可能:

http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html

演示如何从命令行调用inkscape的功能(称为“动词”)。 要获得所有动词inkscape --verb-list在命令行中调用inkscape --verb-list 。 你正在寻找的是SelectionSimplify

因此,您必须编写一个小脚本,用于过滤svg中的每个ID,并使用ID调用inkscape。 就像是:

inkscape filename.svg --select=pathID --verb=SelectionSimplify --verb=FileSave --verb=FileClose

我不知道您是否可以将所有ID与您的每个SVG只需调用一次Inkscape的ID连接起来


从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

替代Inkscape

我使用SVGO获得了更好的结果(将文件从2.7 MB减少到350 KB)。

您可以将这个在线服务用于个人文件:https://jakearchibald.github.io/svgomg/

链接地址: http://www.djcxy.com/p/95833.html

上一篇: Automatizing 'simplify path' for a svg

下一篇: svg from illustrator transparency issues