解码java

时间:2015-12-30 10:15:45

标签: java android svg base64

我将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:

  • 此代码适用于jpeg图像。
  • 如果base64字符串包含base64前缀 (“data:image / svg + xml; base64”或“data:image / jpeg; base64”)decodeByte也总是返回null
  • base64字符串是正确的(它在HTML和其他base64中运行良好 在线工具)

1 个答案:

答案 0 :(得分:0)

(这是基于Robert Longson的深刻见解。)

您的问题与base64编码无关。比这更根本。

您当前采用的方法不起作用,因为BitmapFactory仅解码位图文件格式。 Bitmap类将仅表示PNG,JPG和GIF格式;请参阅javadoc。 (SVG是矢量图形格式,而不是位图格式。)

第二个问题是ImageView中Android当前不支持SVG。因此,您有两种选择:

  • 使用嵌入式浏览器窗口显示SVG图形。 Android 3+默认浏览器支持SVG。 (尽管有可能的解决方法,但Android 2浏览器没有)。

  • 使用第三方SVG库。有一些示例使用Picture对象,而其他一些示例使用ImageView的子类。研究这些选项,然后选择最能满足您要求的选项。

有关替代方案的更多详细信息,请阅读以下答案: