引言:
Android系统支持几种图片(.png (preferred), .jpg (acceptable), .gif (discouraged)), 其中Bitmap位图#ffffffff,包括图片透明度Alpha和RGB,图片质量很好,每一个像素位占4个字节,如果图片很大将会占据很大的内存空间。存储在SDCard的image很小,加载进内存可能就会很大。因此,对bitmap图像进行操作,应该特别小心,可能出现内存溢出问题。为此对于大图片,应该引入该图片的二次采样生成缩略图。
一、图片二次采样
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/**
* 根据图片字节数组,对图片可能进行二次采样,不致于加载过大图片出现内存溢出
* @param bytes
* @return
*/
public
static
Bitmap getBitmapByBytes(
byte
[] bytes){
//对于图片的二次采样,主要得到图片的宽与高
int
width =
0
;
int
height =
0
;
int
sampleSize =
1
;
//默认缩放为1
BitmapFactory.Options options =
new
BitmapFactory.Options();
options.inJustDecodeBounds =
true
;
//仅仅解码边缘区域
//如果指定了inJustDecodeBounds,decodeByteArray将返回为空
BitmapFactory.decodeByteArray(bytes,
0
, bytes.length, options);
//得到宽与高
height = options.outHeight;
width = options.outWidth;
|

本文探讨了Android中处理大图片可能导致的内存溢出问题,提出了图片的二次采样和质量压缩方法,旨在减小内存占用。分别介绍了图片二次采样以生成缩略图、图像质量压缩以及两种不同的按比例大小压缩图片的实现方式,适用于从路径获取图片和直接处理Bitmap压缩的场景。
最低0.47元/天 解锁文章
1169

被折叠的 条评论
为什么被折叠?



