无法使用'<image>'标签导入svg文件

5

我有一张png图片。我在Adobe Illustrator中打开它,并将其保存为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>

当我尝试在Android Studio中导入SVG文件时,出现以下错误:
Empty preview image!
Exception while parsing XML file:
Premature end of file.

请问有人能帮我修复这个问题吗?我导入了其他包含<path>元素的SVG文件,它们可以正常工作。


在Android Studio中使用“SVG to VectorDrawable”插件导入“svg”文件。 - Shashanth
4个回答

11

在将PNG转换为SVG时,我们需要遵循一些规则。并非所有的转换器都能在其默认配置下正常工作。在我的情况下,我找到了最好的转换器网站,它将在转换过程中给您预览图像以供确认,并要求免费注册,然后您就可以下载您的SVG文件。

将PNG转换为SVG - 需要单次注册,每个电子邮件每天只允许使用2个令牌

替代方案: 参考2 参考3

生成SVG后,请使用以下工具将其转换为矢量可绘制(这是必需的,因为Android Studio无法导入由随意转换器生成的所有格式或配置和样式)

从SVG生成矢量可绘制对象

完成以上两步后,您将拥有完美的矢量可绘制对象,可以轻松地复制到drawable中并在需要的地方加载。


我尝试了第一个网站,它给了我带有<path>元素的SVG。你知道其他免费的网站吗?它只提供2次免费转换。 - Misagh Emamverdi
1
是的,这个网站每天只允许使用单个电子邮件获取2个令牌。你也可以尝试这个网站:http://picsvg.com/ 但是在那里,你需要选择颜色和细节=强和过滤器=ready#1或ready#2作为配置。 - Jai
1
第二个链接帮助了我,因为Android Studio不允许我以常规方式导入SVG作为矢量可绘制对象。非常感谢! - Vucko
第一个网站现在即使是前两张图片也不再免费了。 - Amin

8
你试图做的事情是相当无意义的。仅将位图图像(如PNG)放入矢量文件(Illustrator或SVG)本身并没有太多意义。这并不能使位图自动变成矢量图像。如果您想在应用中显示PNG,请使用ImageView并将其指向PNG资源。
另一件需要知道的事情是,Android Studio的SVG转VectorDrawable转换器不支持元素。支持的SVG元素列表可以在回答此其他问题的答案中找到: Android studio支持哪些SVG元素,哪些不支持?

1

我有同样的问题。正如Paul LeBeau所说,问题在于SVG文件中有向量而不是位图(图像),因此Android Studio无法识别该文件。

我找到的解决方案是将您拥有的图像转换为矢量图,使用“图像追踪”和“展开”,这样Illustrator会将其转换为矢量文件。


0

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