Inkscape / OS / Freewareを使用してベクターファイルから複数のオブジェクトを個別のファイルに保存する


9

ダウンロードしたベクターファイル(AI形式)を持っています。ファイルには、さまざまな犬種の単純なベクトル画像が含まれています。私はファイルをinkscapeにロードし、グループ化を解除しました。各犬のベクトルを個別のファイルとして保存する方法が必要です。Inkscapeや他のOS /フリーウェアツールでこれを自動化する方法はありますか?それ以外の場合は、それぞれを選択して名前を付けて保存する必要があります。どんな助けでも大歓迎です!

更新実際のSVGファイルの編集に関するアドバイスを提供してくれたJSBuenoに感謝します。SVGが単なるXMLファイルであることを知りませんでした。ファイルを簡単に確認し、各犬を個別のファイルとしてエクスポートできるはずです。ちなみに、これは、この投稿の目的であったインターフェイスを介して実行するよりもはるかに高速です。アドバイスありがとうございます。


それぞれを選択して保存できないのはなぜですか?自動化ソリューションが必須であるほど本当に多くの画像があるのですか?
スコット

2
これを自動化できるようにするには、svgファイルから抽出する「犬」要素を定義する必要があります。実際には、犬の要素は、切り取られたグループまでの単一の複合線で構成されます。必要なキーボードショートカットを学び、いくつかの音楽を選択して、それに慣れることをお勧めします。

はい、これには80以上の個別オブジェクトがあります。私はより速い方法を探していますが、それが必要な場合は手動で行います。
dinki 2015

あなたは確かにそれをスクリプト化することができます。たとえば、少なくとも80匹の犬のうち30匹を「名前を付けて保存」してこのようなスクリプトを作成するには、Pythonに熟練した人が必要です。熟練していないコーダー、あるいはインクスケープヘルプ関数/ XMLに精通していなくても、80匹の犬を救うよりもはるかに時間がかかる可能性があります。
jsbueno 2015

最終的に、テキストエディター(メモ帳++)でSVGファイルをペンし、各犬が個別のSVGタグに含まれているかどうかを確認することができます。 。それでも、inkscape UIを使用するとより高速になる場合があります。
jsbueno 2015

回答:


5

Inkscapeから複数のオブジェクトをSVGとしてエクスポートするために見つけた2つの解決策があります。これらのメソッドには、自動的に実行できるスクリプトであり、テキストエディターでSVGを編集する必要がないという利点があります。

  1. svg-objects-export

svg-objects-exportスクリプトは、正規表現に基づいてすべてのオブジェクトをエクスポートすることで機能します。あなたの場合、特定のIDを持つすべてのオブジェクトをエクスポートすることで機能します。これを使用するには、まずGithubからスクリプトを複製またはダウンロードします

Inkscapeでは、エクスポートするすべてのオブジェクトのIDを同じファイル名パターンに変更する必要があります。これを行うには、[オブジェクト]> [オブジェクトプロパティ]に移動するか、Ctrl+ Shift+を押して、[オブジェクトプロパティ]ダイアログを開きますO。IDフィールドの変更では、それらすべては、例えば、同じベース名のIDを持っているDog_1Dog_2Dog_3など(オブジェクトが同じIDを持つことはできません)。

ここに画像の説明を入力してください

ファイルを保存してスクリプトをダウンロードしたら、ターミナルで次のコマンドを実行します

python svg-objects-export.py --pattern 'Dog_*' /path/to/your/file.svg

これにより、ベース名IDが「Dog_」のすべてのオブジェクトがエクスポートされます。

  1. inx-exportobjects

inx-exportobjects inkscape拡張機能は、選択されたすべてのオブジェクトを単にエクスポートします。これを使用するには、まずGitlabから拡張機能を複製またはダウンロードします。それをインストールするには、ファイルexport_objects.inxexport_objects.pyにコピーします.config/inkscape/extensions/。Inkscapeでは、拡張機能>エクスポートに「オブジェクトからファイルへ...」というオプションがあります。インストールするオブジェクトを選択し、このオプションを選択します。

ここに画像の説明を入力してください

このダイアログボックスで、ファイルを保存する場所にエクスポートディレクトリを変更し、ベース名をファイルの新しい名前に変更して、[適用]を押します。

ここに画像の説明を入力してください

ファイルは指定したディレクトリにエクスポートされます。

各ソリューションには、アニメーションgifエクスポートなど、他の多くのオプションがあります。これらのオプションは、必ず実験してください。


優れたソリューション@hellocatfoodちょっとしたヒント:エクスポートする前に、キャンバスのサイズを変更できます。私の場合、アイコンがたくさんありました。アイコンの最大幅と最大高さがわかりました。そして、キャンバスをそれぞれの高さx幅にサイズ変更しました。次に、すべてのオブジェクトを選択し、それらを水平方向と垂直方向に揃えてから、エクスポートプロセスを開始します。これにより、適切な高さと幅のSVGが得られます。
Anish Nair、2018

1

前提条件に応じて、すべてのオブジェクトがグループ化され、それ自体が大きなグループに結合されないことがここにあります。(例では犬を利用できなかったため、猫を使用しました)。

ここに画像の説明を入力してください 右下に強調表示された猫、オブジェクトID 5358が単一パスであるため、後で緑色の床を追加して、後で発生するオブジェクト5364に変更しました。混乱させないでください。:)

右からボタン4(矢印1)を押すと、xml-editorが表示されます。

g5358をg-cat-5358(フィールド4)に変更して、テキストツールがこれらのオブジェクトを簡単に選択できるようにしました。これは、xml-svg-names(色、メタ、IDなど)と衝突しないほとんどの要素で機能します。 )。

左側のウィンドウで、名前が変更されたエンティティg-cat-5312が同じインデントレベルの上部にすでにあることがわかります。

Inkscapeはグループの一意のIDを整理しますが、gNUMBERの形式にする必要はありません。他の文字を混在させることができます。既存の識別子を選択しないでください。

識別子を変更した後、「setzen(set)」(5)を押して変更を確認します。ここにドイツ語のインターフェース、YMMVがあります。

svgを(demo-cats.svgとして)保存します。次にスクリプトに切り替えます。

for cat in $( grep g-cat- demo-cats.svg )
do
  id=${cat//[^0-9]/}
  echo $id
  (head -n 53 demo-cats.svg; sed -n "/$cat/,/^    <\/g>/p" demo-cats.svg; echo "</svg>" ) > cat-${id}.svg
done

それは何をするためのものか?興味深いセクションの始まりである「g-cat-」パターンを探します(grepで検索)。 id=${cat//[^0-9]/}式からbashのIDを抽出します。Echoはそれを画面に出力し、何か問題が発生した場合にバグを見つけるのに役立ちます。head -n 53 demo-cats.svgは、すべてのsvg-boilerplateを含むsvgから最初の53行を取得します。異なるsvg形式(inkscape、compressed、normal svg、inkscape-compressed)での設定によって、これは異なる場合があります。ではnl demo-cats.svg | less、あなたができるn個 umerate リットルの INESを、あなたのケースでは、右切削点を見つけるために。

  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1">
     <g

^この部分までは、行を含める必要があります。

次のコマンドはs tream ed itor sedで行われます:sed -n "/$cat/,/^ <\/g>/p" demo-cats.svg;言う(-n)印刷なし(しかし)猫グループを検索します。ただし、インデントレベル2の終了タグgまで</g>です。 Inkscapeの設定を変更します。次に、svgの終了タグを追加しますecho "</svg>"。出力をファイル「cat- $ id.svg」に書き込みます(これにより、既存のファイルがサイレントに上書きされます)。

したがって、2つのファイルcat-5312.svgとcat-5364.svgができあがります。

より洗練されたソリューションは、xmlstarletまたはxmlファイルを検索および編集するために作成された同様のツールを使用して可能になるはずです。残念ながら、私はそれに慣れておらず、10分のドキュメントを読んだ後、動作しませんでした。最初にグループの名前を変更する必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.