Suppression des transformations dans les fichiers SVG

J’ai lutté avec cela pendant un moment, et je n’arrive pas à trouver une réponse (qui fonctionne) n’importe où. J’ai un fichier SVG qui ressemble à ceci:

 ...     

Je veux supprimer la ligne transform="..." mais avoir toujours mon image là où je l’ai placée (dans InkScape). Si je supprime manuellement la transformation, l’image passe à une autre partie de l’écran (comme prévu), mais je dois me débarrasser de la transformation et, en même temps, conserver l’image exactement à l’endroit souhaité. Existe-t-il un moyen de supprimer / aplatir les transformations dans les coordonnées elles-mêmes? (Les seules transformations que j’ai à faire sont traduire et mettre à l’échelle, pas de masortingces.)

Comment supprimer des transformations dans Inkscape

  1. Ouvrir le fichier svg dans Inkscape
  2. Allez dans Edit -> XML Editor
  3. Trouver les atsortingbuts “transformer” dans les calques et les supprimer

Comment déplacer tous les objects sans créer d’autres atsortingbuts de transformation

  1. Allez dans Modifier -> Sélectionner tout dans tous les calques
  2. Aller à l’object -> Transformer

    Dans le panneau Transformation

  3. Décochez Déplacement relatif et cochez Appliquer à chaque object séparément

  4. Définissez les valeurs horizontales et verticales en fonction de vos besoins et cliquez sur Appliquer

Bingo

entrer la description de l'image ici

  1. Chargez votre SVG dans Method Draw http://editor.method.ac (Fichier> Ouvrir une image)
  2. Dissociez vos éléments (Object> Ungroup elements), vous devrez peut-être le faire plus d’une fois.
  3. Choisissez votre chemin
  4. Réorienter le chemin (Object> Reorient Paths).
  5. Enregistrez votre image (Fichier> Enregistrer l’image) Si elle apparaît dans une nouvelle fenêtre, vous pouvez cliquer avec le bouton droit de la souris et “Enregistrer l’image sous …”

J’ai déterminé quel était le problème. J’espérais ne pas avoir à recourir à la réponse de Robert, même si je suis heureux d’avoir la confirmation que cela fonctionnerait! En fin de compte, la réponse de Duopixel était en fait la plus proche, même s’il s’est avéré que quelque chose d’autre se passait également.

Lorsque vous travaillez avec des chemins différents dans des documents Inkscape, je pense que son comportement par défaut consiste à les regrouper sous une . Lors de la modification de chemins dans un groupe, Inkscape ajoute automatiquement une transformation au groupe pour représenter ces modifications. Cependant, si vous ouvrez l’éditeur XML et que vous faites glisser votre chemin en dehors de la et en faites sa propre , Inkscape est libre d’éditer les points individuels à volonté . En fin de compte, cela s’est avéré être un problème de regroupement même si je ne travaillais qu’avec un seul chemin! J’espère que cela aidera les autres dans des situations similaires.

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

Pour certains objects qui ont un problème similaire, des spirales et des écanvass pour un exemple, la méthode rapide consiste à appuyer sur Ctrl + Alt + C (coup sur chemin) – cela convertit cependant l’object en un chemin pur et supprime tous les atsortingbuts supplémentaires, tels que sodipodi: cx, sodipodi: révolutions et ainsi de suite.

Il existe une extension inkscape appelée Apply Transforms qui recalcule les chemins avec ses transformations, c’est exactement ce que je cherchais.

Après l’avoir installé, vous le trouverez dans le menu Extensions> Modifier le chemin> Appliquer la transformation .


crédits: forum Inkscape> Supprimer toutes les transformations tout en restant sur place

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 de curseur) et Inkscape supprimera l’atsortingbut de transformation et ajustera les données de chemin en conséquence. (Ennuyeux si vous voulez réellement conserver l’atsortingbut de transformation.)

Donc, vous pouvez simplement sélectionner le chemin (assurez-vous que c’est le chemin et non le groupe environnant), appuyez sur les touches droite et gauche du curseur et vous avez terminé.

Ouvrez votre svg sur Inkscape :

  • Sélectionnez le groupe contenant toutes les transformations que vous souhaitez supprimer
  • Appuyez sur CTRL + U (dissocier)
  • Appuyez sur CTRL + G (regrouper à nouveau)

De cette façon, vous vous débarrasserez des transformations appliquées au groupe et elles seront transférées vers les chemins contenus dans ce groupe.

À votre santé

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

Ouvrez un fichier SVG, File -> Export -> SVG -> More -> Flatten a bien fonctionné.

Concepteur d'affinité

Il convient de mentionner qu’il existe le mode “Optimisé” dans les préférences:

 Inkscape Preferences > Transforms > Store transformation > Optimized 

Qui est censé minimiser l’occurrence des atsortingbuts de transform autant que possible (mais pas).

Cela semble être activé par défaut de toute façon.

Selon une discussion , une instance où ce mode optimisé manque de zèle est le moment où la page est redimensionnée . Cela entraîne l’application d’une transformation de conversion à l’élément de couche . Il semble que l’évacuation des enfants vers une autre couche soit la meilleure solution pour le moment.

Inkscape a la possibilité d’effacer les données de transformation mais de laisser la valeur de l’object non modifiée.

Dans Inkscape, sélectionnez l’object et le menu “Chemin”, “Simplifier”. Maintenant, vous aurez les transformations supprimées.

J’espère que cela aide.

Dans ce cas, ajoutez simplement le Translate aux valeurs m pour chaque enfant, soit -10.254587 + 10.75 = -0.504587 et -308.96875 + 345.43597 = 36.46722.

Puisque tous les termes de l’exemple sont relatifs (c’est-à-dire minuscule), c’est tout. Si certains étaient absolus (majuscules), par exemple M ou C, ils devraient être ajustés également.

Pour l’échelle, vous multiplieriez essentiellement toutes les valeurs enfants par l’échelle.

SVGO est un excellent outil en ligne de commande open-source pour cela et pour beaucoup d’autres optimisations. Il existe une interface Web en ligne tout aussi excellente appelée SVGOMG.

Les options pertinentes dans ce cas sont moveGroupAttrsToElems (SVGOMG: Move group attrs to elements ) pour déplacer les atsortingbuts de transform des groupes vers les éléments de chemin, ainsi que convertPathData (SVGOMG: Round/rewrite paths convertPathData Path) pour les transform en d .

Pour supprimer l’atsortingbut transform d’un élément (groupe) g dans Inkscape, vous pouvez déplacer le groupe vers son emplacement final, le dissocier et regrouper tous les éléments. Maintenant, un nouveau groupe a été créé et si vous ne le déplacez plus, aucun atsortingbut de transformation ne lui sera associé.

Trouvé:

  • Définissez la taille de page souhaitée *
  • Si votre couche actuelle a une transformation (vérifiez avec l’éditeur XML, il s’agit du groupe supérieur sous l’élément SVG), créez un nouveau calque et déplacez tous les objects
  • Dissocier tous les groupes (cela peut ne pas être nécessaire, YMMV)
  • Sélectionnez tous les objects et appliquez une transformation NULL (telle que l’échelle de 100% à 100% ou la flèche droite + la flèche gauche) lors de la transformation de la banque: Optimisé dans Préférences / Transformations
  • Si vous deviez annuler des groupes, vous pouvez maintenant les regrouper
  • Enregistrez une copie sous forme de fichier SVG optimisé et définissez la précision numérique souhaitée

*: Ou au moins placer les objects là où vous en avez besoin, par rapport au coin supérieur gauche de la page. Il est regrettable que les coordonnées SVG fassent référence au coin supérieur gauche, tandis qu’Inkscape redimensionne la page par rapport au bas à gauche!

Si quelqu’un cherche une solution pour le faire dans Sketch 3, sélectionnez le calque puis cliquez sur Calque-> Chemins-> Aplatir.

  1. Sélectionnez les éléments en question
  2. Objet> Dissocier (répétez jusqu’à ce que tout soit dégroupé; voir l’éditeur XML pour les nœuds nesteds)
  3. Path> Object to Path (convertit les polygones en chemins)
  4. Objet> Transformer> Décocher le déplacement relatif> Appliquer

J’ai pu me débarrasser d’une transformation de masortingx(...) due à la mise en miroir) en combinant le chemin avec un rectangle et en supprimant les nœuds du rectangle. La partie translate(...) resta cependant.

J’ai essayé la solution affichée ici, à savoir supprimer les balises de groupe dans le fichier SVG et la rouvrir dans Inkscape (0.48.3.1 dans mon cas). Hélas, après avoir traduit à nouveau les chemins en utilisant le mode de sélection et de transformation (F1) et l’avoir sauvegardé, les balises de groupe sont réapparues! Inkscape enregistre toutes les transformations appliquées au chemin dans un élément de groupe environnant. À moins d’utiliser l’outil de sélection de nœud de chemin (F2), appuyez sur Ctrl + a et déplacez les nœuds du chemin vers leur emplacement correct. Après avoir fait cela à la place et enregistré par la suite, Inkscape n’a pas ajouté les balises de groupe, car cette traduction s’appliquait directement au modèle de chemin. J’espère que cela t’aides.

Dans mon cas, les groupes sont en réalité causés par des couches. La suppression de tous les calques du document supprime le groupe et le transforme (éventuellement combiné à la dissociation d’objects et à leur regroupement, comme dans Suppression de transformations dans des fichiers SVG (answer-35490189 de @Charlie ci-dessus))

Mon problème spécifique concernait les symboles définis en dehors de la page, nécessitant une transformation sur la page.

Pour déplacer les symboles sur la page sans nécessiter de transformation, j’ai dû suivre ces étapes dans Inkscape:

  1. Ouvrez la fenêtre Symboles (Maj + Ctrl + Y)
  2. Supprimez le symbole de la bibliothèque de documents. (Il y a un bouton pour cela dans la fenêtre.)
  3. Maintenant, le graphique apparaît dans le document, en dehors de la limite de la page.
  4. Dissociez le graphique. (Ceci est une étape essentielle!)
  5. Déplacez le graphique dans la limite de la page.
  6. Ajoutez le graphique à la bibliothèque de symboles.

Cela semble aléatoire, mais rien d’autre que j’ai essayé de travailler, alors ici vous allez au hasard d’autres personnes. Certains de mes chemins avaient une sorte de marge autour d’eux qui ne pouvait être vue que lors de leur sélection ( Exemple ). Je pense que cela a été créé lorsque j’ai collé une couche à partir d’un autre fichier inkscape et que je l’ai fait pivoter de 90 degrés. Cela a fait qu’un motif de remplissage sur les formes a une transformation différente (lignes plus espacées). Il a également fait en sorte que les objects d’alignement ne fonctionnent pas comme prévu. L’utilisation de la transformation Apply mentionnée par @Piotr_cz a résolu le problème de la transformation, mais la marge étrange est restée. Je l’ai accidentellement éliminé en changeant la valeur Flou sur le trait et en la ramenant à zéro.

D’une certaine manière, je n’ai eu aucune chance avec aucune des approches. S’il y a une section dans votre svg et des utilisations comme ceci:

  

vous devrez peut-être supprimer tous les usages et tout retirer de la section defs. Ensuite, vous pouvez utiliser inkscape pour placer le tout correctement, puis appliquer les transformations en utilisant le plug-in mentionné. J’espère que ça aide quelqu’un.

J’ai eu ce problème pendant des années. La solution est clairement de pouvoir jouer dynamicment avec les transformations du navigateur, si cela ne va pas être “corrigé” dans inkscape.

Un utilisateur Mc sur les forums Inkscape m’a donné cette solution .

La solution construit la transformation actuelle entre un élément SVG et son élément racine SVG, puis retourne un ensemble complet d’informations BBox basé sur le total des transformations.

Il serait également possible de changer facilement l’élément auquel les calculs sont relatifs, si vous souhaitez effectuer un travail sur navigateur entre deux parties du même fichier SVG.

Enfin, je peux réellement avoir une fenêtre d’affichage SVG panoramique.