将VectorDrawable转换为SVG [关闭]


71

VectorDrawable手动或使用网络工具进行了相反的转换(从SVG到)。

但是我很难做相反的事情。我有,VectorDrawable但不确定如何将其转换为SVG,我可以找到零在线工具来实现。

有没有人对此有经验,有哪些步骤或工具?


4
参见w3schools.com/graphics/svg_path.asp,您所要做的就是替换path d="..."从xml vector drawable中获取的数据
pskink

@pskink我做了类似的事情。我认为有更好的自动化方法。无论如何
sandalone

1
只需编写小型Python脚本即可为您做这件事
pskink

1
如果您是bash大师,但是imho python更容易,因为它具有良好的xml支持docs.python.org/2/library/xml.html#module-xml(例如ElementTree)
pskink

7
在工具shapeshifter.design允许从VectorDrawable到SVG转换,以看各个层/路径的能力。享受:-)
Computingfreak

Answers:


134

我遵循的步骤:

android:pathData 替换为 d

android:fillColor 替换为 fill

android:strokeColor 替换为 stroke

android:strokeWidth 替换为 stroke-width

android:fillType 替换为 fill-rule

在VectorDrawable的路径下fillColorfill="none"在SVG。

android:viewportHeight="24" android:viewportWidth="24"viewBox="0 0 24 24"在SVG。

矢量可绘制

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

    <path
        android:fillColor="#ffffff"
        android:pathData="M12,3L2,12h3v8h2.5v-0.8c0-1.5,3-2.2,4.5-2.2s4.5,0.8,4.5,2.2V20H19v-8h3L12,3zM12,15.2c1.2,0-2.2-1-2.2-2.2 s1-2.2,2.2-2.2s2.2,1,2.2,2.2S13.2,15.2,12,15.2z" />
    <path android:pathData="M0,0h24v24H0V0z" />
</vector>

SVG

<svg xmlns="http://www.w3.org/2000/svg"
    width="24" 
    height="24" 
    viewBox="0 0 24 24" >

    <path 
        fill="#ffffff"
        d="M12,3L2,12h3v8h2.5v-0.8c0-1.5,3-2.2,4.5-2.2s4.5,0.8,4.5,2.2V20H19v8h3L12,3zM12,15.2c1.2,0-2.2-1-2.2-2.2 s1-2.2,2.2-2.2s2.2,1,2.2,2.2S13.2,15.2,12,15.2z" />
    <path d="M0,0h24v24H0V0z" fill="none"/>
</svg>

那是很大的帮助,但是我认为您的SVG缺少结束标记。否则似乎无法验证或在Illustrator中打开。
Aonghus Shortt

XSLT可以帮助自动完成这项工作。这很简单,但是我不知道如何处理属性的前缀“ android:”。因此,我删除了所有出现的“ android:”,然后将可绘制矢量转换为原始SVG。这是XSL模板;我在这个网站上尝试过,我有用。
Oleksii K.

在SVG中矢量可绘制映射中的色调是什么?
andylamax

1
颜色“ FF000000”不起作用,应更改为“ 000000”
Felix Cruz

1
该列表的另一个名称:android <group>标记在SVG中为<g>,如果要处理android:translateX或android:translateY,则需要在其位置使用transform =“ translate()”属性。
NickGlowsinDark

37

VectorDrawable格式非常类似于SVG

您可以找到的文档VectorDrawable格式在这里,和的文件SVG格式在这里

我刚刚编写了此Python脚本该脚本将矢量可绘制的xml转换为svg。它没有涵盖所有矢量可绘制属性,但可用于最常见的属性。您只需将xml文件拖放到脚本上,文件将被转换。


它适用于Linux吗?放什么都没做

@СергейГрушин我在Windows上尝试了该脚本,但是它也应该在Linux上也可以使用。您应该检查控制台是否有错误。也许未安装xml模块?在这种情况下,您应该运行pip install xml
Hyperion '18

该脚本仅在命令行中有效。谢谢。但是我想要拖放,所以我使用创建了桌面快捷方式。Exec=python /opt/utils/xml2svg.py %U现在,我可以拖放文件并将其拖放到桌面快捷方式上:)我还编辑了2件事:现在脚本转换后删除源xml文件,现在svg文件名,无需.xml预扩展。

仅供参考,@ Hyperion,我为您的存储库添加了分叉,以更好地处理颜色:github.com/RohanTalip/VectorDrawable2Svg
Rohan Talip

感谢您的py脚本!
ingh.am
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.