繁体   English   中英

在java中解码SVG图像文件(编码为base64)

[英]Decode SVG image file (encoded as base64) in java

我有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”),则decodingByte也始终返回null
  • base64字符串是正确的(它在HTML和其他base64在线工具中很好用)

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

您的问题与base64编码无关。 它比那更基础。

您当前采用的方法将无法正常工作,因为BitmapFactory将只解码位图文件格式。 Bitmap类仅代表PNG,JPG和GIF格式; 看到javadoc (SVG是矢量图形格式,而不是位图格式。)

第二个问题是Android目前在ImageView中没有对SVG的原生支持。 所以你有两个选择:

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

  • 使用第三方SVG库。 有些示例使用Picture对象和其他使用ImageView子类的示例。 调查选项并选择最符合您要求的选项。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM