Android ImageView加载base64图片 java.lang.IllegalArgumentException: bad base-64

有错误的使用方法

String base64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABXCAYAAACTFMIVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAA..."
byte[] decodedString = Base64.decode(base64, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
imageView.setImageBitmap(decodedByte);

这样的会报如下错误

 java.lang.IllegalArgumentException: bad base-64
        at android.util.Base64.decode(Base64.java:163)
        at android.util.Base64.decode(Base64.java:138)
        at android.util.Base64.decode(Base64.java:120)

必须知道
完整的DataURL语法:DataURL= data:mediatype;base64,<Base64编码的数据>。
这是因为前面的前缀

data:image/png;base64, 

是DataURL里的《data:mediatype;base64,》 是不属于base64的编码数据里的一部分

解决办法

将DataURL前面的 data:image/png;base64, (也就是data:mediatype;base64,) 删除

正确的代码

String base64 = "iVBORw0KGgoAAAANSUhEUgAAAFAAAABXCAYAAACTFMIVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAA..."
byte[] decodedString = Base64.decode(base64, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
imageView.setImageBitmap(decodedByte);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值