无法使用&#39; <img/>&#39;导入svg标签

时间:2016-09-27 07:24:40

标签: android android-studio svg vector-graphics adobe-illustrator

我有一张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文件,它们运行良好。

2 个答案:

答案 0 :(得分:6)

在将png转换为svg时,我们需要遵循一些规则。所有转换器的默认配置都不能正常工作。在我的情况下,我找到了最好的转换器网站,它将为您提供预览图像以便在转换期间进行确认,这将要求免费注册,然后您可以下载您的svg文件。

Convert PNG to SVG - 需要单点注册,每天只能通过一封电子邮件发送2个令牌

替代品: Reference2 Reference3

生成svg后,使用以下工具将svg转换为vector drawable(这是必要的,因为android studio无法导入随机转换器生成的所有格式或配置和样式)

Generate Vector Drawable from SVG

完成上述2个步骤后,您将获得完美的矢量绘图,您可以轻松地将其复制到drawable中并在任何需要的地方加载。

答案 1 :(得分:2)

你要做的事情是毫无意义的。将位图图像(如PNG)放在矢量文件(Illustrator或SVG)中本身并没有多大意义。它并没有神奇地将位图转换为矢量图像。如果您想在应用中显示PNG,只需使用ImageView并将其指向PNG资源。

另一件需要知道的是Android Studio SVG到VectorDrawable转换器不支持<image>元素。支持的SVG元素列表可以在另一个问题的答案中找到:

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