你的位置:首页 > 软件开发 > 操作系统 > android 图片性能优化

android 图片性能优化

发布时间:2016-05-23 00:00:10
本章讲述在android开发中,图片处理方面的优化。包括知识点为大图加载,图片压缩,图片缓存处理及开源图片处理框架Universal-Image-Loader。1.图片引发的内存不足 当在android应用中加载一张高分辨率的图片时,十分容易出现Out of m ...

    本章讲述在android开发中,图片处理方面的优化。包括知识点为大图加载,图片压缩,图片缓存处理及开源图片处理框架Universal-Image-Loader。

1.图片引发的内存不足

    当在android应用中加载一张高分辨率的图片时,十分容易出现Out of memory(OOM),这是由于内存溢出造成的,每个应用所使用的堆内存大小一般是固定的,有的是16M,有的可能会大些。那为什么这么大内存加载一张图片会溢出呢?原因就是android在加载图片的时候是使用位图来放到内存中的,那位图在内存中的占用空间计算就是分辨率*每个像素占用的内存。

  • ALPHA_8:每个像素占用1byte内存
  • ARGB_4444:每个像素占用2byte内存
  • ARGB_8888:每个像素占用4byte内存
  • RGB_565:每个像素占用2byte内存

    如果一个图片的分辨率是1024*768,采用ARGB_8888,那么占用的空间就是 1024*768*4=3MB,这张图片需要占用3M的内存空间,对于这样的图片,如果只加载一样的话,内存还能应付的过来,如果分辨率更高。例如:3648*2736的一样照片,内存占用为3648*2736*4=33MB,这一张图片就是占用33MB的空间,肯定会导致内存溢出。 那应该如何处理呢?

  • 降低图片加载到内存时的图片大小(分辨率)。
  • 采用更节省内存的编码,例如ARGB_4444。
  • 如果是加载大量图片的话,还可以采用缓存。

2.BitmapFactory.options类介绍

    BitmapFactory.Options为BitmapFactory的一个内部类,它主要用于设定与存储BitmapFactory加载图片的一些信息。下面是Options中需要用到的属性:

  • options.inJustDecodeBounds:如果设置为true,将不把图片的像素数组加载到内存中,仅加载一些额外的数据(如图片大小)到Options中。
  • options.outHeight:图片的高度。
  • options.outWidth:图片的宽度。
  • options.inSampleSize:如果设置,图片将依据此采样率进行加载,不能设置为小于1的数。例如设置为4,分辨率宽和高将为原来的1/4,这个时候整体所占内存将是原来的1/16。
  • options.inDither:设置为false不进行图片抖动处理
  • options.inPreferredConfig:设置为null 让解码器以最佳方式解码

    对于大图片处理时,一般通过压缩方式显示在移动设备上。如指定图片按照固定大小展示处理代码如下:

1 //大图片压缩为宽,高200px的图像展示2  BitmapFactory.Options options = new Options(); 3  options.inJustDecodeBounds = true; 4  BitmapFactory.decodeResource(rs, R.drawable.a2,options); 5  options.inPreferredConfig = Bitmap.Config.ARGB_4444; 6  options.inSampleSize = calculateInSampleSize(options, 200, 200);  //获取压缩倍数7  options.inJustDecodeBounds = false; 8  Bitmap bitmap = BitmapFactory.decodeResource(rs, R.drawable.a2,options); 9  iv.setImageBitmap(bitmap); //图片绑定

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:android 图片性能优化

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录