inkscapeコマンド「simplifypath」を自動化したい。具体的には、svg-fileを入力として受け取り、図のすべてのパスに「simplify path」を適用し、新しい(小さい)svg-fileを保存するコマンドラインツールが必要です。これはinkscapeを使用して可能ですか?仕事をする無料のコマンドラインツール(私はLinuxを使用しています)はありますか?
3 に答える
アップデート:
質問/回答がかなり古いため、inkscapeコマンドラインが変更されました。
inkscape file.svg --batch-process --actions='EditSelectAll;SelectionSimplify;FileSave;FileClose'
OrenBen-KikiまたはPixの回答のコメントも参照してください。
ORIG:
可能である必要があります:
http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html
コマンドラインからinkscapeの関数(「動詞」と呼ばれる)を呼び出す方法を示します。すべての動詞のリストを取得するにはinkscape --verb-list
、コマンドラインで呼び出します。あなたが探しているのはですSelectionSimplify
。
したがって、svgからすべてのIDをフィルタリングし、IDを使用してinkscapeを呼び出す小さなスクリプトを作成する必要があります。このようなもの(すべてのパスを最適化し、最後にinkscapeを終了します)
inkscape filename.svg --verb=EditSelectAll --verb=SelectionSimplify --verb=FileSave --verb=FileClose --verb=FileQuit
Fabianの回答を拡張して、簡略化関数のしきい値を制御するには、目的のしきい値を含む最小限の設定ファイルを使用して、偽のホームディレクトリを作成する必要があることがわかりました。これが私がまとめた簡単なスクリプトです。
simple.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
# for Inkscape < 1.0
#HOME=$FAKEHOME inkscape $FILENAME --verb=EditSelectAll --verb=SelectionSimplify --verb=FileSave --verb=FileClose
# for Inkscape > 1.0
HOME=$FAKEHOME inkscape --with-gui --batch-process $FILENAME --verb='EditSelectAll;SelectionSimplify;FileSave'
#rm -rf $FAKEHOME
Inkscapeの代替
SVGOを使用するとはるかに良い結果が得られました(ファイルを2.7MBから350KBに減らしました)。
このオンラインサービスは、個々のファイルに使用できます:https ://jakearchibald.github.io/svgomg/