Androiod字符串转Bitmap导致的内存溢出

Androiod字符串转Bitmap导致的内存溢出

BitmapFactory.decodeByteArray

byte[] bitmapArray = Base64.decode(string, Base64.DEFAULT);
//BitmapFactory.decodeByteArray在数据较多时,可能会导致内存溢出
bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length);

使用以下方法


byte[] bitmapArray = Base64.decode(string, Base64.DEFAULT);
bitmap = byteToBitmap(bitmapArray);

----------------------------------------------------
private  Bitmap byteToBitmap(byte[] imgByte) {
  InputStream input = null;
  Bitmap bitmap = null;
  BitmapFactory.Options options = new BitmapFactory.Options();
  options.inSampleSize = 8;
  input = new ByteArrayInputStream(imgByte);
  SoftReference softRef = new SoftReference(BitmapFactory.decodeStream(
        input, null, options));
  bitmap = (Bitmap) softRef.get();
  if (imgByte != null) {
            imgByte = null;
  }
  try {
     if (input != null) {
       input.close();
     }
 } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
 }
 return bitmap;
}

Base64字符串图片的问题

在接口中返回包含有Base64字符串图片的列表数据时,会导致解析缓慢,图片也因为不能缓存,进一步导致图片显示缓慢。应避免使用Base64字符串的方式返回大量图片。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值