2017-07-06 126 views
17

我已經手動或使用網絡工具進行了相反的轉換(SVG到VectorDrawable)。將VectorDrawable轉換爲SVG

但我很難做相反的事情。我有VectorDrawable,但我不知道如何將其轉換爲SVG,我可以找到零個在線工具來完成它。

有沒有人有這方面的經驗,有什麼步驟或工具來做到這一點?

+2

請參閱https://www.w3schools.com/graphics/svg_path.asp,您需要做的就是用從xml向量中抽取的數據替換'path d =「...」' – pskink

+0

@pskink I做了那樣的事情。我認爲有一個更好的自動化方式。無論如何, – sandalone

+1

只需編寫一個小的Python腳本就可以了。 – pskink

回答

21

我的步驟如下:

android:pathData替換爲d

android:fillColor沒有fillColorfill

在VectorDrawable的路徑替換爲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> 
+0

這是一個很好的幫助,但是你的SVG缺少我認爲的結束標籤。否則似乎無法驗證,或在Illustrator中打開。 –

6

VectorDrawable格式非常類似於SVG

您可以找到VectorDrawable格式here的文檔和SVG格式here的文檔。

我剛剛寫了this Python script,它將vector drawable xml轉換爲svg。它不涵蓋所有向量可繪製的屬性,但它適用於最常見的屬性。 您只需將xml文件放到腳本上,文件就會被轉換。

+0

它的Linux?滴什麼都沒有 –

+0

@СергейГрушин我在Windows上試過這個腳本,但它也應該在Linux上工作。你應該檢查控制檯是否有錯誤。也許它沒有安裝的xml模塊?在這種情況下,您應該運行'pip install xml' – Hyperion

+0

腳本只能在命令行中運行。謝謝。但是我想拖放,所以我用'Exec = python/opt/utils/xml2svg創建桌面快捷方式。PY%U'現在我可以將文件拖放他的桌面快捷方式:)另外我編輯的兩兩件事:現在轉換,SVG文件名,不'.xml'預增長後,現在腳本刪除源XML文件。 –