我将SVG文件编码为base64,我想用ImageView显示图像。 这就是我试过的:
// imageBase64 is string that represents the SVG image encoded as base64
byte[] decodedString = Base64.decode(imageBase64, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
但decodeByte总是返回null。
PS:
答案 0 :(得分:0)
(这是基于Robert Longson的深刻见解。)
您的问题与base64编码无关。比这更根本。
您当前采用的方法不起作用,因为BitmapFactory
仅解码位图文件格式。 Bitmap
类将仅表示PNG,JPG和GIF格式;请参阅javadoc。 (SVG是矢量图形格式,而不是位图格式。)
第二个问题是ImageView
中Android当前不支持SVG。因此,您有两种选择:
使用嵌入式浏览器窗口显示SVG图形。 Android 3+默认浏览器支持SVG。 (尽管有可能的解决方法,但Android 2浏览器没有)。
使用第三方SVG库。有一些示例使用Picture
对象,而其他一些示例使用ImageView
的子类。研究这些选项,然后选择最能满足您要求的选项。
有关替代方案的更多详细信息,请阅读以下答案: