Android 图片二次采样、质量压缩

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

引言:

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值