ChatGPT解决这个技术问题 Extra ChatGPT

将 VectorDrawable 转换为 SVG [关闭]

关闭。此问题不符合 Stack Overflow 准则。它目前不接受答案。我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便可以用事实和引用来回答它。 4年前关闭。社区在 3 个月前审查了是否重新打开此问题并将其关闭:原始关闭原因未解决 改进此问题

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

但我很难做相反的事情。我有 VectorDrawable,但我不确定如何将其转换为 SVG,而且我可以找到零个在线工具来做到这一点。

有没有人有这方面的经验,有哪些步骤或工具可以做到这一点?


G
GGets

我遵循的步骤:

android:pathData 替换为 d

android:fillColor 替换为 fill

android:strokeColor 替换为 stroke

android:strokeWidth 替换为 stroke-width

android:fillType 替换为 fill-rule

VectorDrawable 中没有 fillColor 的路径是 SVG 中的 fill="none"

android:viewportHeight="24" android:viewportWidth="24" 在 SVG 中是 viewBox="0 0 24 24"

例子

矢量可绘制

<?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 中打开。
XSLT 可以帮助自动化这项工作。这很简单,但我不知道如何处理属性的前缀“android:”。因此,我删除了所有出现的“android:”,然后将可绘制的矢量转换为原始 SVG。这是 XSL 模板;我试过 on this site,它对我有用。
tint: in vector drawable map to in svg是什么?
颜色“FF000000”不起作用,应更改为“000000”
另一个列表:android 标签是 SVG 中的 ,如果你想处理 android:translateX 或 android:translateY,你需要使用 transform="translate()" 属性。
H
Hyperion

VectorDrawable 格式与 SVG 非常相似。

您可以找到 VectorDrawable 格式的文档here,以及 SVG 格式的文档here

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


它的Linux?什么都不做
@СергейГрушин 我在 Windows 上尝试了该脚本,但它也应该在 Linux 上运行。您应该检查控制台是否有错误。也许它没有安装xml模块?在这种情况下,您应该运行 pip install xml
脚本仅在命令行中有效。谢谢。但是我想要拖放,所以我使用 Exec=python /opt/utils/xml2svg.py %U 创建桌面快捷方式现在我可以将文件拖放到桌面快捷方式上:) 我还编辑了两件事:现在脚本在转换后删除源 xml 文件,现在没有 svg 文件名.xml 预扩展。
仅供参考,@Hyperion,我分叉了您的存储库以添加更好的颜色处理:github.com/RohanTalip/VectorDrawable2Svg
感谢 py 脚本!