206

私はしばらくこれに苦労していて、どこにも答えを見つけることができないようです(それはうまくいきます)。私は次のようなSVGファイルを持っています:

<svg

   xmlns:dc="http://purl.org/dc/elements/1.1/"
   ...
   width="72.9375"
   height="58.21875"
   ...>
   ...
   <g
     ...
     transform="translate(10.75,-308.96875)"
     style="...">
     <path
       inkscape:connector-curvature="0"
       d="m -10.254587,345.43597 c 0,-1.41732 0.17692,-2.85384 0.5312502,-3.5625 0.70866,-1.41733 2.14518,-2.82259 3.5625,-3.53125 1.41733,-0.70866 2.11392,-0.70867 3.53125,0 1.41732,0.70866 ... z"
       ... />
  </g>
</svg>

線を削除したいのですtransform="..."が、画像を配置した場所(InkScape内)に残しておきます。変換を手動で削除すると、画像は画面の別の部分に圧縮されます(予想どおり)が、変換を完全に削除すると同時に、画像を希望の場所に正確に保持する必要があります。パス座標自体への変換を削除/フラット化する方法はありますか?(私が処理しなければならない唯一の変換は、変換とスケーリングであり、行列はありません。)

4

26 に答える 26

198

Inkscapeで変換を削除する方法

  1. Inkscapeでsvgファイルを開きます
  2. [編集]->[すべて選択]に移動します
  3. [オブジェクト]->[グループ解除]に移動します
  4. [編集]->[XMLエディター]に移動します
  5. レイヤー内の「変換」属性を見つけて削除します

別の変換属性を作成せずにすべてのオブジェクトをまとめて移動する方法

  1. [編集]->[すべてのレイヤーですべて選択]に移動します
  2. [オブジェクト]->[変換]に移動します

変換パネルで

  1. [相対移動]をオフにし、[各オブジェクトに個別に適用する]をオンにします
  2. 必要に応じて水平値と垂直値を設定し、[適用]をクリックします
于 2014-06-12T08:43:16.383 に答える
67

パスを変換で再計算するApplyTransformsと呼ばれるinkscape拡張機能があります。これはまさに私が探していたものです。

インストール後、 [拡張機能]>[パスの変更]>[変換の適用]の下にメニューが表示されます。


クレジット:Inkscapeフォーラム>インプレースを維持しながらすべての変換を削除

于 2016-12-21T08:57:37.290 に答える
58

私は問題が何であるかを理解しました。私はロバートの答えに頼る必要がないことを望んでいましたが、それがうまくいくことを確認できてうれしいです!結局、Duopixelの答えは実際に最も近いものでしたが、他の何かが起こっていたことが判明しました。

Inkscapeドキュメントでさまざまなパスを操作している場合、デフォルトの動作では、<svg:g.../>タグの下でそれらをグループ化すると思います。グループ内のパスを変更すると、Inkscapeはこれらの変更を表すためにグループに変換を自動的に追加します。ただし、XMLエディターを開いてパスをタグの外側にドラッグし、<svg:g.../>それを独自の<svg:path.../>タグにすると、Inkscapeは個々のポイントを自由に編集できます。結局、私が1つのパスでしか作業していなかったとしても、それはグループ化の問題であることが判明しました。これが同様の状況で他の人に役立つことを願っています。

于 2012-11-18T08:50:13.563 に答える
57

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

  1. メソッド描画http://editor.method.acにSVGをロードします([ファイル]> [画像を開く])
  2. 要素のグループ化を解除します([オブジェクト]> [要素のグループ化を解除])。これは複数回行う必要がある場合があります。
  3. パスを選択してください
  4. パスの向きを変更します([オブジェクト]> [パスの向きを変更])。
  5. 画像を保存する([ファイル]> [画像を保存])新しいウィンドウに表示された場合は、右クリックして[名前を付けて画像を保存...]をクリックします。
于 2012-11-11T16:29:30.037 に答える
36

Inkscapeでsvgを開きます:

  • 削除したいすべての変換を含むグループを選択します
  • CTRL+ U(グループ解除)を押します
  • CTRL+ G(もう一度グループ化)を押します

このようにして、グループに適用された変換を取り除き、それらがこのグループに含まれるパスに転送されます。

于 2017-05-17T10:06:10.693 に答える
24

グループの場合、再グループ化すると作業をすばやく実行できます。グループを選択し、Ctrl + Shift + G(グループ解除)、次にCtrl + G(グループ)を押します。

同様の問題を抱えている一部のオブジェクト、たとえばスパイラルやスターの場合、簡単な方法はCtrl + Alt + C(ストロークからパス)を押すことです-しかし、これはオブジェクトを純粋なパスに変換し、すべての余分な属性を削除します、 sodipodi:cx、sodipodi:revolutionsなど。

于 2014-08-01T14:23:12.337 に答える
18

SVGOは、これと他の多くの最適化のための優れたオープンソースコマンドラインツールです。SVGOMGと呼ばれる同様に優れたオンラインWebUIがあります

この場合の関連オプションは、属性をグループからパス要素に移動するためのmoveGroupAttrsToElems( SVGOMG :)と、フラット化するための(SVGOMG:)です。Move group attrs to elementstransformconvertPathDataRound/rewrite pathstransformd

于 2017-11-20T16:52:05.733 に答える
16

私はInkscapeを好みますが、Affinity Designer(〜$ 40 / Mac)を使用すると、AndroidVectorDrawablesを操作する際の労力を節約できました。

SVGを開き、[ファイル]->[エクスポート]->[SVG]->[その他]->[フラット化]変換がうまく機能しました。

AffinityDesigner

于 2015-10-13T11:05:04.247 に答える
15

私の経験では、Inkscapeを使用している場合は、パス要素をわずかに移動するだけで十分です(カーソルキーなど)。Inkscapeは変換属性を削除し、それに応じてパスデータを調整します。(実際に変換属性を保持したい場合は面倒です。)

したがって、パスを選択し(周囲のグループではなくパスであることを確認してください)、左右のカーソルキーを押すだけで完了です。

于 2012-11-11T22:04:52.610 に答える
9

環境設定には「最適化」モードがあることに注意してください。

Inkscapeの設定>変換>ストアの変換>最適化

これは、属性の発生をtransform可能な限り最小限に抑えることになっています(ただし、そうではありません)。

とにかく、これはデフォルトでオンになっているようです。

議論によると、この最適化モードが熱意を欠いている1つの例は、ページのサイズが変更されたときです。これにより、translate変換がレイヤー<g>要素に適用されます。現時点では、子供たちを別の層に避難させることが最善の解決策のようです。

于 2015-03-10T14:45:18.693 に答える
8

Inkscapeには、変換データをクリアするオプションがありますが、オブジェクトの値は変更されません。

Inkscapeで、オブジェクトを選択し、[パス]メニューの[簡略化]を選択します。これで、変換が削除されます。

于 2013-07-11T12:55:41.723 に答える
7
  1. 問題の要素を選択します
  2. オブジェクト>グループ化解除(すべてがグループ化解除されるまで繰り返します。ネストされたノードについてはXMLエディターを参照してください)
  3. パス>オブジェクトからパス(ポリゴンをパスに変換)
  4. オブジェクト>変換>相対移動のチェックを外す>適用
于 2016-02-18T19:00:57.477 に答える
6

この場合、各子のm値に変換を追加するだけなので、-10.254587 + 10.75=-0.504587および-308.96875+345.43597=36.46722になります。

例のすべての用語は相対的(つまり小文字)なので、それだけです。MやCなどの絶対的なもの(大文字)がある場合は、それらも調整する必要があります。

スケールの場合、基本的にすべての子の値にスケールを掛けます。

于 2012-11-11T13:56:12.543 に答える
6

Inkscapeの要素(グループ)から変換属性を削除するにはg、グループを最終的な場所に移動し、グループ化を解除してから、すべての要素を再グループ化します。これで新しいグループが作成されました。再度移動しないと、変換属性がアタッチされません。

于 2014-10-17T15:08:47.500 に答える
4

スケッチ3でこれを行うための解決策を探している人がここに到着した場合は、レイヤーを選択してから、[レイヤー]->[パス]->[フラット]をクリックします。

于 2015-03-06T15:28:50.690 に答える
4

私の場合、最適化されたSVGとして保存することで問題が解決しました。したがって、Inkscapeでは次のように使用します。

ファイル->名前を付けて保存...->最適化されたSVG。

于 2019-01-20T12:05:51.043 に答える
3

それを見つけた:

  • 希望のページサイズを設定します*
  • 現在のレイヤーに変換がある場合(XMLエディターで確認してください。SVG要素の下の一番上のグループです)、新しいレイヤーを作成して、すべてのオブジェクトをそのレイヤーに移動します。
  • グループのグループ化を解除します(これは必要ない場合があります、YMMV)
  • すべてのオブジェクトを選択し、ストア変換を使用しながらnull変換(100%100%の拡大縮小、右矢印+左矢印など)を適用します。[設定]/[変換]で最適化
  • グループを元に戻す必要がある場合は、グループを再グループ化できるようになりました
  • コピーを最適化されたSVGとして保存し、必要な数値精度を設定します

*:または、少なくともページの左上隅を基準にして、必要な場所にオブジェクトを配置します。SVG座標が左上隅を参照しているのに対し、Inkscapeは左下を基準にしてページのサイズを変更しているのは残念です。

于 2014-08-15T20:39:31.613 に答える
3

matrix(...)パスを長方形と組み合わせてから、長方形のノードを削除することで、(ミラーリングによる)変換を取り除くことができました。しかし、そのtranslate(...)部分は残った。

于 2016-05-28T20:13:19.903 に答える
2

これは、Inkscapeを使用している場合に機能します。

  1. すべてを選択してグループ化を解除します
  2. 「最適化されたSvg(* .svg)」として保存

私が試したすべてのケースで、これにより変換属性が削除されました。より複雑なSVGで機能するかどうかはわかりません。

于 2020-02-05T20:22:17.347 に答える
1

ここに掲載されている解決策を試しました。つまり、SVGファイルのグループタグを削除して、Inkscape(私の場合は0.48.3.1)で再度開きます。残念ながら、選択変換モード(F1)を使用してパスを再度変換して保存した後、グループタグが再表示されました。Inkscapeは、パスに適用されたすべての変換を周囲のグループ要素に保存します。パスノード選択ツール(F2)を使用しない限り、ctrl + aを押して、パスのノードを正しい場所に移動します。代わりにこれを実行して後で保存した後、この変換はパスモデルに直接適用されたため、Inkscapeはグループタグを追加しませんでした。お役に立てれば。

于 2014-01-24T14:36:29.737 に答える
1

私は何年もの間この問題を抱えています。解決策は、inkscapeで「修正」されない場合、ブラウザで変換を動的に再生できるようにすることです。

InkscapeフォーラムのユーザーMcが私にこの解決策をくれました。

このソリューションは、SVG要素とそのSVGルート要素の間で現在の変換を構築し、変換の合計に基づいてBBox情報の完全なセットを返します。

同じSVGファイルの2つの部分の間でブラウザの作業を行いたい場合は、計算が関連する要素を簡単に変更することもできます。

最後に、実際にパンSVGビューポートを作成できます。

于 2016-05-02T14:06:16.083 に答える
1

私の場合、グループは実際にはレイヤーによって引き起こされます。ドキュメント内のすべてのレイヤーを削除すると、グループと変換が削除されました( SVGファイル内の変換の削除(上記の@Charlieからのanswer-35490189)のように、オブジェクトのグループ化解除と再グループ化などと組み合わせることができます)

于 2016-11-29T22:20:03.653 に答える
1

私の特定の問題は、ページの外側で定義されたシンボルにあり、そのため、ページに変換を表示する必要がありました。

変換を必要とせずにシンボルをページに移動するには、Inkscapeで次の手順を実行する必要がありました。

  1. シンボルウィンドウを開きます(Shift + Ctrl + Y)
  2. ドキュメントライブラリからシンボルを削除します。(ウィンドウにはそのためのボタンがあります。)
  3. これで、グラフィックがドキュメントのページ境界の外側に表示されます。
  4. グラフィックのグループ化を解除します。(これは重要なステップです!)
  5. グラフィックをページ境界内に移動します。
  6. グラフィックをシンボルライブラリに追加し直します。
于 2017-08-24T12:10:29.480 に答える
1

これはランダムに見えますが、私が試した他の何もうまくいかなかったので、ここであなたはランダムに他の人に行きます。私のパスのいくつかは、それらを選択したときにのみ見ることができる、それらの周りにある種のマージンを持っていました(例)。これは、別のinkscapeファイルからレイヤーを貼り付けて90度回転させたときに作成されたと思います。これにより、形状のパターン塗りつぶしの変換が異なります(線がさらに離れて配置されます)。また、整列オブジェクトが期待どおりに機能しなくなりました。@Piotr_czによって言及されたApplyTransformを使用すると、変換の問題が修正されましたが、奇妙なマージンが残っていました。Blur on Strokeを任意の値に変更し、ゼロに戻すことで、誤ってそれを取り除きました。

于 2017-10-27T02:24:59.647 に答える
0

どういうわけか、私はどのアプローチにも運がなかった。<defs>svgと使用法に次のようなセクションがある場合:

<g transform="matrix( *** ) "><use xlink:href="#***"/></g>

すべての使用法を削除し、defsセクションからすべてを削除する必要がある場合があります。次に、inkscapeを使用してすべてを正しい方法で配置し、前述のプラグインを使用して変換を適用できます。それが誰かを助けることを願っています。

于 2018-06-05T12:18:08.700 に答える
0

Kubuntu20.04のInkscape1.0

このスレッドはかなり古いですが、私の経験/解決策を投稿したいと思います。FreeCADのTechDrawingワークベンチのテンプレートを作成しようとしたときにこの問題に遭遇しました。これらのテンプレートには、変換を含めることはできません。

私の場合、外部の.svgファイル(完全にInkscapeで作成)から会社のロゴを追加する必要がありました。そのロゴには、グラフィック要素とテキスト要素が含まれています。そのロゴをテンプレートにコピーすると、変換が作成されたため、FreeCADでテンプレートが正しく機能しませんでした。

  • まず、 www.freecadweb.org/...で提案されているこのソリューションは私には機能しません。そのため、私はWebを検索して、このディスカッションを見つけました。

  • 第二に、上記で提案された解決策はどれも私にはうまくいきませんでしたが、それらは私を正しい軌道に乗せました。チャーリーの答えは近づきましたが、オブジェクト>変換>相対移動のチェックを外す>適用は違いを示しませんでした。

私のために働いたのは:

  1. 他の人が言ったように、すべてのグループを解除します。
  2. テキストオブジェクトをパスに変換します-これは私の場合は不可欠のようです!
  3. xml-Editor内の既存の変換をすべて削除し、関連するオブジェクトで何が起こるかを観察します。私の場合、対応する要素の位置が変わりました。
  4. これらの変更を手動で修正しますが、何もグループ化しないでください。
  5. 通常のsvgとして保存(通常=最適化やその他の特別な設定は使用されていません)

FreeCADでそのテンプレートを使用すると正常に動作します。


奇妙な詳細の1つ:私の解決策は、私の場合はテキスト要素が問題であったことを示唆していますが、それはそれほど簡単なことではありません。実際、ベースドキュメント(ロゴをコピーしたドキュメント)には多くのテキスト要素が含まれており、それらのいずれも変換しませんでした。したがって、「外部ソース」テキスト要素の組み合わせである可能性があります。関連する問題を抱えている可能性のある他の人へのヒントとして、この詳細を投稿するだけです。

于 2020-07-03T12:01:56.773 に答える