inSampleSize优化Bitmap

本文介绍了一种在Android中对图片进行解码和压缩的方法,通过调整inSampleSize参数,可以有效地将图片压缩到指定的宽度和高度,同时保持图片的质量。
/**
 * 对图片进行解码压缩。
 *
 * @param resourceId 所需压缩的图片资源
 * @param reqHeight  所需压缩到的高度
 * @param reqWidth   所需压缩到的宽度
 * @return Bitmap
 */
private Bitmap decodeBitmap(int resourceId, int reqHeight, int reqWidth) {
	BitmapFactory.Options options = new BitmapFactory.Options();
	//inJustDecodeBounds设置为true,解码器将返回一个null的Bitmap,系统将不会为此Bitmap上像素分配内存。
	//只做查询图片宽高用。
	options.inJustDecodeBounds = true;
	BitmapFactory.decodeResource(getResources(), resourceId, options);
	//查询该图片的宽高。
	int height = options.outHeight;
	int width = options.outWidth;
	int inSampleSize = 1;

	//如果当前图片的高或者宽大于所需的高或宽,
	// 就进行inSampleSize的2倍增加处理,直到图片宽高符合所需要求。
	if (height > reqHeight || width > reqWidth) {
		int halfHeight = height / 2;
		int halfWidth = width / 2;
		while ((halfHeight / inSampleSize >= reqHeight)
				&& (halfWidth / inSampleSize) >= reqWidth) {
			inSampleSize *= 2;
		}
	}
    options.inSampleSize = inSampleSize;
	//inSampleSize获取结束后,需要将inJustDecodeBounds置为false。
	options.inJustDecodeBounds = false;
	//返回压缩后的Bitmap。
	return BitmapFactory.decodeResource(getResources(), resourceId, options);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LakeSideHu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值