0

我有一張png圖片。我在Adobe Illustrator中打開它並將其保存爲SVG而不更改默認配置:無法用'<image>'標籤導入svg

enter image description here

這給了我這個SVG文件:

<?xml version="1.0" encoding="utf-8"?> 
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 
    viewBox="0 0 100 100" enable-background="new 0 0 100 100" xml:space="preserve"> 
<image overflow="visible" width="714" height="714" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsoAAALKCAYAAAArlndAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ 
bWFnZVJlYWR5ccllPAAAA2ppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp 
bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 
... 
ex8pzU1wT+bf4YnI2vz8uvwzq/PX6ueW58dHNvPztf4ZAGzZ/wswAPds0/tWAII4AAAAAElFTkSu 
QmCC" transform="matrix(1 0 0 1 -307 -307)"> 
</image> 
</svg> 

當我嘗試導入SVG文件在Android Studio中我得到這個錯誤:

Empty preview image! 
Exception while parsing XML file: 
Premature end of file. 

任何人都可以幫助我如何解決這個問題嗎?我導入其他具有<path>元素的svg文件,它們工作良好。

+0

使用'SVG到VectorDrawable'插件Android Studio中導入'svg'文件。 – Shashanth

回答

3

將png轉換爲svg時,我們需要遵循一些規則。所有轉換器的默認配置都不能正常工作。在我的情況下,我找到了最好的轉換器網站,它會給你預覽圖像,以確認在轉換過程中,這將要求免費註冊,然後你可以下載你的svg文件。

Conver PNG to SVG

產生SVG後,使用以下工具將SVG轉換爲矢量繪製(這是必要的,因爲不知何故機器人工作室是不是能夠導入通過隨機轉換器產生的所有格式或配置和風格)

Generate Vector Drawable from SVG

後上述2個步驟,你將有完善的矢量繪製它,無論你需要的,你可以很容易地複製到可繪製並加載。

+0

我嘗試了第一個網站,它給了我'svg與''元素。你知道任何其他免費網站嗎?它只提供2次免費轉換。 –

+1

是的,這個網站每天只允許通過一封電子郵件發送2個代幣。你也可以試試這個:http://picsvg.com/但你必須選擇顏色和細節= strong和filter = ready#1或準備#2作爲配置 – Jai

+2

非常感謝。我也發現這個:https://www.vectorizer.io/ –

1

你試圖做的是一個毫無意義的事情。將像PNG這樣的位圖圖像本身放在矢量文件(Illustrator或SVG)中沒有多大意義。它不會神奇地將位圖轉換爲矢量圖像。如果您想在您的應用中顯示PNG,只需使用ImageView並將其指向PNG資源即可。

另外要知道的是,Android Studio SVG to VectorDrawable轉換器不支持<image>元素。支持SVG元素的列表可以在答案中找到這個其他問題:

Which SVG elements are supported by Android studio and which are not?