1
votes

Conversion de SVG en dessin vectoriel Android

J'essaie de convertir des fichiers SVG qui proviennent d'un outil de ligne de commande (abcm2ps) en fichiers vectoriels Android, mais je rencontre des problèmes.

Mon processus est le suivant:

  • Créez le fichier SVG d'origine à l'aide de l'outil mentionné ci-dessus
  • Exécutez le fichier SVG via Inkscape pour corriger la taille de la page
  • Exécutez à nouveau le résultat via Inkscape pour l'enregistrer au format SVG simple (lisez quelque part que cela pourrait résoudre les problèmes, mais cela n'aide pas)
  • Essayez d'importer le fichier SVG dans Android Studio en vain
  • Je reçois des erreurs indiquant que certains identifiants référencés sont introuvables. J'ai regardé dans le fichier XML et j'ai remarqué que cette erreur se produit uniquement pour les références qui contiennent à nouveau des références. Exemple:

    <defs
       id="defs6633">
      <path
         id="usharp"
         class="fill"
         d="m 136,-702 v 890 h 32 v -890 m 128,840 h 32 V -750 H 296 M 64,-464 v 116 l 338,-96 V -560 M 64,-118 V -2 l 338,-98 v -114"
         inkscape:connector-curvature="0"
         style="fill:currentColor" />
      <use
         id="sh0"
         transform="matrix(0.018,0,0,0.018,-4,5)"
         xlink:href="#usharp"
         x="0"
         y="0"
         width="100%"
         height="100%" />
    </defs>
    <use
       x="44.5"
       y="20"
       xlink:href="#sh0"
       id="use6635"
       width="100%"
       height="100%" />
    

    Comme vous pouvez le voir, l'objet use6635 fait référence à sh0 , qui fait à nouveau référence à usharp code>.

    D'autres endroits où l'objet référencé ne fait pas référence à un autre objet fonctionnent, cependant.

    Est-ce une limitation connue du convertisseur? Existe-t-il un moyen (de préférence un outil en ligne de commande) d'aplatir la hiérarchie de référence afin que seuls les objets référencés ne référencent pas d'autres objets?


    EDIT: OK, conversion en EPS puis en SVG crée des SVG qui sont traités sans l'avertissement ci-dessus - Je reçois maintenant des avertissements indiquant que les largeurs de trait mises à l'échelle ne sont pas prises en charge ...


    1 commentaires

    Essayez d'utiliser l'outil Vector Asset Studio intégré à Android Studio. developer.android.com/studio/write/vector-asset-studio


    3 Réponses :


    2
    votes

    vous devriez essayer Shape Builder , j'ai eu un problème connexe qu'il a résolu le mien, j'espère qu'il sera utile pour vous aussi!


    2 commentaires

    Bel essai, n'aide cependant pas. Il dit que mes fichiers SVG ne peuvent pas être importés.


    OK, je suis un peu plus loin qu'hier. Changer mon flux de travail pour créer d'abord un EPS, puis utiliser Inkscape pour créer un SVG à partir de cet EPS permet à votre site lié de lire correctement le SVG. Android Vector Studio le lit également maintenant, mais avertit de ne pas pouvoir mettre à l'échelle la largeur des lignes ...