简化 Android 矢量图的方法

18

我希望简化一个在 inkscape 制作的 svg 矢量图形。根据 Android Studio 的提示,我的 矢量路径太长

我不知道该如何修复它以使其正常工作。下面是代码及其预期外观。

   <?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="43.844998dp"
    android:height="43.591998dp"
    android:viewportWidth="43.844998"
    android:viewportHeight="43.591998">

    <path
        android:fillColor="@color/green_8"
        android:fillAlpha="0.78039216"
        android:strokeWidth="2.64575863"
        android:strokeLineJoin="round"
        android:pathData="M15.2489,209.971 C12.7531,209.916,10.5865,211.751,10.2745,214.283 L9.66091,219.266 L4.38994,219.255 C1.66777,219.249,-0.52854,221.436,-0.53455,224.158 C-0.540523,226.88,1.64606,229.076,4.36823,229.082 L8.45091,229.092 L7.75302,234.76 L4.38993,234.753 C1.66776,234.747,-0.52854,236.933,-0.53456,239.656 C-0.540533,242.378,1.64606,244.574,4.36823,244.58 L6.54302,244.586 L6.11669,248.048 C5.78398,250.75,7.69139,253.192,10.3932,253.525 C13.095,253.858,15.5379,251.951,15.8706,249.249 L16.4421,244.607 L22.0361,244.619 L21.6139,248.047 C21.2812,250.749,23.1883,253.191,25.8901,253.524 C28.5919,253.857,31.0348,251.95,31.3675,249.248 L31.9349,244.641 L38.3859,244.655 C41.1081,244.661,43.3044,242.474,43.3104,239.752 C43.3164,237.03,41.1298,234.834,38.4076,234.828 L33.1446,234.817 L33.8427,229.149 L38.3858,229.159 C41.108,229.165,43.3043,226.978,43.3103,224.256 C43.3163,221.534,41.1297,219.338,38.4075,219.332 L35.0524,219.325 L35.525,215.487 C35.8577,212.785,33.9506,210.343,31.2488,210.01 C28.547,209.677,26.1041,211.584,25.7714,214.286 L25.1536,219.303 L19.5596,219.291 L20.028,215.488 C20.3607,212.786,18.4536,210.344,15.7518,210.011 C15.5829,209.99,15.4151,209.978,15.2487,209.975 Z M18.35,229.112 L23.944,229.124 L23.2459,234.792 L17.6522,234.78 Z" />
</vector>

enter image description here


现在你可以使用Android Studio插件来优化向量:https://plugins.jetbrains.com/plugin/12690-mike-s-idea-extensions/versions/stable/148933 - Miha_x64
2个回答

26

使用avocado可以减少复杂性和路径长度。

这将优化您的矢量可绘制对象并修复问题。

安装:

npm install -g avocado

用法示例:

avocado vector.xml

这里是使用avocado优化矢量可绘制文件之前和之后的效果展示:beforeafter

更多命令选项可以查看此链接


它会破坏SVG的显示吗?是否有用于VectorDrawable批量操作的在线工具?或者是Android Studio的插件? - android developer
Avocado可以使用/path/to/svgs/*压缩给定路径中的所有文件。我从未见过它破坏SVG。但是... - Eran Boudjnah
以防万一有人来到这里,这个工具似乎与你在遇到“矢量路径过长”错误时所需的相反,因为它会将路径连接起来而不是将其分割成较短的路径。我之前有两条“过长”的路径,现在却只有一条更“过长”的路径了。 - Marina.Eariel
另一个选择是将在线工具SVGOMG与Avocado结合使用,以优化SVG并进一步处理,从而得到更小的文件。https://jakearchibald.github.io/svgomg/ - undefined

2
您还可以压缩SVG,然后重新创建XML可绘制对象。例如使用svgo: https://github.com/svg/svgo 安装命令: npm -g install svgo 然后运行: svgo original_icon.svg -o minified_icon.svg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接