BitmapFactory.Options的属性解析

本文介绍如何使用BitmapFactory.Options的inJustDecodeBounds属性获取图片尺寸而不加载图片到内存,以及如何利用inSampleSize属性对图片进行有效压缩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BitmapFactory.Options的属性解析:
inJustDecodeBounds=true,让解析方法禁止为bitmap分配内存,返回值不再是一个Bitmap对象,而是null,但是BitmapFactory.Options的outWidth和outHeight和outMimeType都会被赋值,
这个属性可以让我们在加载图片之前就能获取到图片的长宽和MIME类型,从而根据情况对图片进行压缩。
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(),R.drawable.zhu,options);
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
String imageType = options.outMimeType;


inSampleSize=4,实现对图片进行压缩,可以将像素为2048*1536的图片压缩成512*384像素
根据图片宽高和控件宽高计算出合适的inSampleSize值:
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
if(imageHeight > reqHeight || imageWidth > reqWidth){
 final int heightRatio = Math.round((float)imageHeight/(float)reqHeight);
 final int widthRation = Math.round((float)imageWidth/(float)reqWidth);
 inSampleSize = heightRatio < widthRation ? heightRatio : widthRation;
}


根据inSampleSize的值,先将inJustDecodeBounds=false,然后再解析一次图片就能得到压缩后的图片了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值