引言:
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;
|