Suppression des transformations dans les fichiers SVG

Cela fait longtemps que je lutte avec cela, et je n'arrive pas à trouver de réponse (qui fonctionne) nulle part. J'ai un fichier SVG qui ressemble à ceci:

<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>

je veux supprimer la ligne transform="..." mais avoir toujours mon image reste où je l'ai placé (dans InkScape). Si je supprime manuellement la transformation, l'image se ferme à une autre partie de l'écran (comme prévu), mais je dois me débarrasser de la transformation tout à fait et, en même temps, avoir l'image rester exactement là où je le veux. Y a-t-il un moyen d'enlever/aplatir les transformations dans les coordonnées du chemin elles-mêmes? (Les seules transformations que j'ai à gérer sont traduire et scale, pas de matrices.)

110
demandé sur Ephemera 2012-11-11 10:35:24

23 réponses

comment supprimer transforme en Inkscape

  1. ouvrir le fichier svg dans Inkscape
  2. Allez dans Édition -> XML Editor
  3. Trouver "transformer" les attributs dans les couches et les supprimer

comment déplacer tous les objets sans créer une autre transformation attributs

  1. Allez à Modifier -> Tout sélectionner dans Toutes les Couches
  2. Aller à l'Objet -> Transformation

    dans Transform panel

  3. Décocher la case Relatif et cochez la case Appliquer à chaque objet séparément

  4. mettre Horizontal et Vertical valeurs selon vos besoins et cliquez appliquer

Bingo

85
répondu Serge Seletskyy 2014-06-12 08:43:16

enter image description here

  1. Charger votre SVG dans la Méthode de Tirage http://editor.method.ac (Fichier > Ouvrir l'Image)
  2. Dissocier vos éléments (Objet > Dissocier des éléments), vous pourriez avoir à le faire plus d'une fois.
  3. Sélectionnez votre chemin
  4. réorienter le chemin (objet > réorienter les chemins).
  5. enregistrer votre image (Fichier > Enregistrer Image) si elle apparaît dans une nouvelle fenêtre, vous pouvez clic droit et "enregistrer L'Image sous..."
44
répondu Duopixel 2016-04-12 16:42:39

j'ai trouvé quel était le problème. J'espérais ne pas avoir à recourir à Robert de réponse, même si je suis heureux de confirmer que ce travail! En fin de compte Duopixel la réponse était en fait la plus proche, bien qu'il s'avère que quelque chose d'autre se passait aussi bien.

quand vous travaillez avec différents chemins dans les documents Inkscape, je crois que son comportement par défaut est de les regrouper sous une étiquette <svg:g.../> . Lors de la modification des chemins dans un groupe, Inkscape ajoutez automatiquement une transformation au groupe pour représenter ces changements. Cependant, si vous ouvrez L'éditeur XML et faites glisser votre chemin en dehors de la balise <svg:g.../> et en faites sa propre balise <svg:path.../> , Inkscape est libre de modifier les points individuels à volonté. En fin de compte, il s'est avéré que c'était un problème de regroupement même si Je ne travaillais qu'avec un seul chemin! Espérons que cela aide les autres dans des situations similaires.

43
répondu Ephemera 2015-10-29 10:18:05

pour les groupes de regroupement peut faire le travail rapidement. Sélectionnez le groupe et appuyez sur Ctrl+Maj+G (degroup) puis Ctrl+G (groupe).

pour certains objets qui ont un problème similaire, spirales et étoiles pour un exemple, le moyen rapide est d'appuyer sur Ctrl+Alt+C (course to path) - cela convertit cependant l'objet en un chemin pur et supprime tous les extra-attributs, tels que sodipodi:CX, sodipodi:révolutions et ainsi de suite.

18
répondu UTF_or_Death 2014-08-28 17:57:00

il y a une extension inkscape appelée Apply Transforms qui recompute les chemins avec ses transformations, c'est exactement ce que j'ai cherché.

après l'installation, vous trouverez le menu it Sous Extensions > modifier le chemin > appliquer transformer .


crédits: Forum Inkscape > supprimer toutes les transformations tout en restant en place

13
répondu piotr_cz 2016-12-21 08:57:37

d'après mon expérience, si vous utilisez Inkscape, il suffit de déplacer légèrement l'élément path (par exemple avec les touches curseur), et Inkscape supprimera l'attribut transform et ajustera les données path en conséquence. (Ennuyeux si vous voulez réellement garder l'attribut transform.)

donc, vous pouvez simplement sélectionner le chemin (assurez-vous que c'est le chemin et pas le groupe environnant), appuyez sur la touche droite et la touche gauche du curseur, et vous avez terminé.

12
répondu Thomas W 2012-11-11 22:04:52

ouvrez votre svg sur Inkscape :

  • sélectionnez le groupe qui contient toutes les transformations que vous voulez supprimer
  • Appuyez sur CTRL + U (dissocier)
  • Appuyez sur CTRL + G (groupe)

de cette façon, vous vous débarrasserez de les transformations s'appliquent au groupe et elles seront transférées aux chemins qui sont contenus dans ce groupe.

Cheers

10
répondu rmartrenado 2017-05-17 10:58:45

alors que je préfère Inkscape, Affinity Designer (~$40 / Mac) m'a épargné des heures d'effort en travaillant avec Android Vector Drawables.

Ouvrir un SVG, Fichier -> Exporter -> SVG -> Plus -> Aplatir transforme a très bien fonctionné.

Affinity Designer

9
répondu snodnipper 2015-10-13 11:05:04

il faut mentionner qu'il y a le mode" optimisé "dans les préférences:

Inkscape Preferences > Transforms > Store transformation > Optimized

qui est censé minimiser l'occurrence des attributs transform autant que possible, (mais ne le fait pas).

cette option semble être activée par défaut de toute façon.

selon une discussion , un cas où ce optimisé mode manque de zèle est lorsque la page est redimensionné . Cela provoque une transformation translate à appliquer à la couche <g> élément. Il semble que l'évacuation des enfants vers une autre couche soit la meilleure solution pour le moment.

7
répondu Evgeni Sergeev 2015-03-10 14:45:18

Inkscape a la possibilité de supprimer les données de transformation mais de laisser la valeur de l'objet non modifié.

dans Inkscape, sélectionnez l'objet et le menu 'Path', 'Simplify'. Maintenant, vous allez faire enlever les transformations.

J'espère que ça aidera.

6
répondu Kumar 2013-07-11 12:55:41

SVGO est un excellent outil en ligne de commande open-source pour ceci et un tas d'autres optimisations. Il y a une interface Web en ligne tout aussi excellente pour it appelé SVGOMG

les options pertinentes dans ce cas sont moveGroupAttrsToElems (SVGOMG: Move group attrs to elements ) pour déplacer les attributs transform des groupes aux éléments de chemin, plus convertPathData (SVGOMG: Round/rewrite paths ) pour aplatir transform en d .

6
répondu Rob Hogan 2017-11-20 16:52:05

dans ce cas, il suffit d'ajouter la translate aux valeurs de m pour chaque enfant so -10.254587 + 10,75 = -0,504587 et -308.96875 + 345.43597 = 36.46722.

puisque tous les termes de l'exemple sont relatifs (c.-à-d. minuscules) c'est tout. Si certains étaient absolus (cas supérieur), par exemple M ou C, ils devraient également être ajustés.

pour l'échelle, on multiplie toutes les valeurs de l'enfant par l'échelle.

5
répondu Robert Longson 2012-11-11 13:56:12

pour supprimer l'attribut transform d'un g élément (groupe) dans Inkscape, vous pouvez déplacer le groupe à sa place finale, ungroup il et puis regrouper tous les éléments. Maintenant un nouveau groupe a été créé, et si vous ne le déplacez pas à nouveau, il ne recevra pas d'attribut transform attaché à lui.

4
répondu mcnesium 2014-10-17 15:08:47

si quelqu'un atterrit ici à la recherche d'une solution pour le faire dans le croquis 3, Sélectionnez le calque et cliquez sur calque->chemins->aplatir.

4
répondu Joel Worsham 2015-03-06 15:28:50

Trouvé:

  • Paramétrez la taille de page désirée*
  • si votre couche actuelle a une transformation (vérifiez avec L'éditeur XML, c'est le groupe supérieur sous L'élément SVG) alors créez une nouvelle couche et déplacez tous les objets vers elle""
  • Dégrouper tous les groupes (ce qui peut ne pas être nécessaire, YMMV)
  • sélectionner tous les objets et appliquer une transformée nulle (telle que l'échelle de 100% 100%, ou flèche droite + flèche gauche) tout en ayant Transformation de magasin: optimisé dans les préférences /transforme
  • si vous avez dû défaire n'importe quels groupes, vous pouvez maintenant les regrouper
  • enregistrer une copie comme SVG optimisé et définir votre précision numérique désirée

*: ou au moins placer les objets là où vous en avez besoin, par rapport au coin supérieur gauche de la page. Il est regrettable que les coordonnées SVG renvoient au coin supérieur gauche, tandis que Inkscape redimensionne la page par rapport au coin inférieur. gauche!

3
répondu Tobia 2014-08-15 20:39:31
  1. sélectionner les éléments en question
  2. Objet > Dissocier (répéter jusqu'à ce que tout est décortiqué; voir l'éditeur XML pour les nœuds imbriqués)
  3. Chemin > Objet en Chemin (conversion de polygones pour les chemins)
  4. Objet > Transformation > Décocher la case relative déplacer > Appliquer
3
répondu Charlie 2016-02-18 19:00:57

j'ai été capable de me débarrasser d'une matrix(...) transform (due au mirroring) en combinant le chemin avec un rectangle et en enlevant ensuite les noeuds du rectangle. La partie translate(...) resta cependant.

3
répondu Emily L. 2016-05-28 20:13:19

j'ai essayé la solution postée ici, à savoir supprimer les tags de groupe dans le fichier SVG et le rouvrir dans Inkscape (0.48.3.1 dans mon cas). Hélas, après avoir traduit les chemins de nouveau en utilisant le mode select et transform (F1) et l'avoir sauvegardé, les tags de groupe sont réapparus! Inkscape enregistre toutes les transformations appliquées au chemin dans un élément de groupe environnant. Sauf si vous utilisez l'outil de sélection des noeuds de chemin (F2), appuyez sur ctrl+a et déplacez les noeuds du chemin à leur place droite. Après avoir fait ceci à la place et enregistré par la suite Inkscape n'a pas ajouté les tags de groupe, car cette traduction s'appliquait directement au modèle path. Espérons que cette aide.

1
répondu Skadi2k3 2014-01-24 14:36:29

Dans mon cas, les groupes sont en fait causés par des couches. La suppression de toutes les couches du document supprime le groupe et transforme (éventuellement combiné avec le dégroupage des objets et leur regroupement etc comme dans suppression des transformations dans les fichiers SVG (réponse-35490189 de @Charlie ci-dessus)

1
répondu Jamie Pate 2017-05-23 10:31:37

mon problème spécifique était avec les symboles qui ont été définis en dehors de la page, ce qui nécessite une transformation à afficher sur la page.

pour déplacer les symboles à la page sans exiger une transformation, j'ai dû passer par ces étapes dans Inkscape:

  1. ouvrir la fenêtre des symboles (Shift+Ctrl+Y)
  2. Supprimer le symbole de la bibliothèque de documents. (Il y a un bouton pour ça dans la fenêtre.)
  3. maintenant le graphique apparaît dans le document, à l'extérieur de la limite de la page.
  4. Dissocier le graphique. (Cette étape est essentielle!)
  5. déplacez le graphique à l'intérieur de la limite de la page.
  6. ajouter le graphique à la bibliothèque de symboles.
0
répondu Peter 2017-08-24 12:10:29

cela semble aléatoire, mais rien d'autre que j'ai essayé n'a fonctionné, donc ici vous allez au hasard autre personne. Certains de mes chemins avaient une sorte de marge autour d'eux qui ne pouvait être vu lors de leur sélection( example ). Je pense que ceci a été créé quand j'ai collé une couche d'un autre fichier inkscape et l'ai fait tourner de 90 degrés. Cela a fait un remplissage de motif sur les formes ont une transformation différente (lignes espacées plus loin à l'écart). Il a également fait aligner les objets fonctionnent pas comme prévu. En utilisant le Apply Transform mentionné par @Piotr_cz a corrigé le problème de transformation, mais l'étrange marge est restée. Je me suis accidentellement débarrassé de lui en changeant le flou sur la course à n'importe quelle valeur et en le changeant de nouveau à zéro.

0
répondu Jim 2017-10-27 02:24:59

D'une façon ou d'une autre je n'ai eu aucune chance avec l'une des approches. S'il y a une section <defs> dans votre svg et des usages comme ceci:

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

vous pourriez avoir à supprimer tous les usages et tout enlever de la section defs. Ensuite, vous pouvez utiliser inkscape pour tout placer de la bonne manière et ensuite appliquer les transformations en utilisant le plugin mentionné. Espérons que cela aide quelqu'un.

0
répondu k102 2018-06-05 12:18:08

ce numéro existe depuis des années. La solution est clairement d'être capable de jouer dynamiquement avec les transformations dans le navigateur, si son ne va pas être" fixé " dans inkscape.

un utilisateur Mc sur les forums Inkscape m'a donné cette solution .

la solution construit la transformation courante entre un élément SVG et son élément SVG root, puis renvoie un ensemble complet d'informations BBox basées sur le total des transformations.

il serait également possible de modifier facilement l'élément auquel les calculs sont relatifs, si vous voulez faire dans le travail de navigateur entre deux parties du même fichier SVG.

enfin je peux avoir une vue panoramique de SVG.

0
répondu Jay Day Zee 2018-08-17 21:26:48