android studio 释放图片
时间: 2023-11-15 07:02:59 浏览: 182
android studio
在Android Studio中,释放图片通常是为了防止内存溢出。以下是一些释放图片的方法:
1.使用BitmapFactory.Options来缩小原始图片的大小,以减少内存占用。
2.使用Bitmap.recycle()方法释放原始Bitmap占用的内存。
3.使用FileOutputStream将Bitmap保存到指定的路径上,然后使用BitmapFactory.decodeFile()方法重新加载图片,以释放原始图片占用的内存。
4.使用Bitmap.compress()方法将Bitmap压缩为PNG或JPEG格式,以减少内存占用。
其中,第一种方法是最常用的方法,可以通过以下代码实现:
```
public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,
int reqWidth, int reqHeight) {
// 首先设置inJustDecodeBounds=true来获取图片的原始大小
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
// 计算inSampleSize的值
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// 使用inSampleSize来解码图片
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
}
public static int calculateInSampleSize(BitmapFactory.Options options,
int reqWidth, int reqHeight) {
// 原始图片的大小
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
// 计算出实际宽高和目标宽高的比率
final int heightRatio = Math.round((float) height / (float) reqHeight);
final int widthRatio = Math.round((float) width / (float) reqWidth);
// 选择宽和高中最小的比率作为inSampleSize的值,这样可以保证最终图片的宽和高一定都会大于等于目标的宽和高。
inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
}
return inSampleSize;
}
```
以上代码会根据指定的宽度和高度来缩小原始图片的大小,以减少内存占用。
阅读全文