图片的二次采样
2017-10-09 16:28
190 查看
//点击事件
public void erCi(View view){
ImageView imageView = (ImageView) findViewById(R.id.image_view);
/**
* java.lang.OutOfMemoryError内存溢出的异常 ...OOM=OutOfMemoryError
*
* 当我们加载一张很大的图片 的时候可能会出现内存溢出,,,处理这张大图片...二次采样
*
* 二次采样就是为了避免图片加载时的OOM异常
*
* 参考博客:http://blog.csdn.net/u012702547/article/details/51245133
*
* 第一次采样我主要是想要获得图片的压缩比例
*
* 第二次采样是加载图片的缩略图
*/
//imageView.setImageResource(R.drawable.aaa);
Bitmap bitMap = getBitMap(Environment.getExternalStorageDirectory() + "/aaa.jpg", 320, 480);
imageView.setImageBitmap(bitMap);
}
/**
* 这个方法是二次采样的方法
* @param path 图片的路径
* @param width 图片要显示的宽度
* @param height 图片要显示的高度
* @return 返回值是bitmap
*/
private Bitmap getBitMap(String path,int width,int height){
//1.第一次采样不加载整张图片,,,只加载边框
//从文件解码一个图片
BitmapFactory.Options options = new BitmapFactory.Options();
//设置只加载边框
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path,options);
//获取大图片的宽度和高度
int outWidth = options.outWidth;
int outHeight = options.outHeight;
//计算宽度和高度显示的比例
int x = outWidth / width;
int y = outHeight / height;
//这是压缩的比例
int simpleSize = 1;
if (x>y && y>1){
simpleSize = x;
}else if (y>x && x>1){
simpleSize = y;
}
//........到这个位置计算出压缩的比例,,,完成第一次采样
//第二次采样是加载图片的缩略图
options.inJustDecodeBounds = false;//不在只加载边框,,,要加载整个图片的像素点
options.inSampleSize = simpleSize;//指定加载图片的压缩比例
options.inPreferredConfig = Bitmap.Config.RGB_565;//设置图片的加载模式...565在内存中一个像素占2字节,,8888一个像素占4个字节
//Bitmap.Config.ALPHA_8;
//Bitmap.Config.ARGB_4444;
//Bitmap.Config.ARGB_8888
return BitmapFactory.decodeFile(path,options);//以...选项去解码图片文件,,,返回值是bitmap
}
public void erCi(View view){
ImageView imageView = (ImageView) findViewById(R.id.image_view);
/**
* java.lang.OutOfMemoryError内存溢出的异常 ...OOM=OutOfMemoryError
*
* 当我们加载一张很大的图片 的时候可能会出现内存溢出,,,处理这张大图片...二次采样
*
* 二次采样就是为了避免图片加载时的OOM异常
*
* 参考博客:http://blog.csdn.net/u012702547/article/details/51245133
*
* 第一次采样我主要是想要获得图片的压缩比例
*
* 第二次采样是加载图片的缩略图
*/
//imageView.setImageResource(R.drawable.aaa);
Bitmap bitMap = getBitMap(Environment.getExternalStorageDirectory() + "/aaa.jpg", 320, 480);
imageView.setImageBitmap(bitMap);
}
/**
* 这个方法是二次采样的方法
* @param path 图片的路径
* @param width 图片要显示的宽度
* @param height 图片要显示的高度
* @return 返回值是bitmap
*/
private Bitmap getBitMap(String path,int width,int height){
//1.第一次采样不加载整张图片,,,只加载边框
//从文件解码一个图片
BitmapFactory.Options options = new BitmapFactory.Options();
//设置只加载边框
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path,options);
//获取大图片的宽度和高度
int outWidth = options.outWidth;
int outHeight = options.outHeight;
//计算宽度和高度显示的比例
int x = outWidth / width;
int y = outHeight / height;
//这是压缩的比例
int simpleSize = 1;
if (x>y && y>1){
simpleSize = x;
}else if (y>x && x>1){
simpleSize = y;
}
//........到这个位置计算出压缩的比例,,,完成第一次采样
//第二次采样是加载图片的缩略图
options.inJustDecodeBounds = false;//不在只加载边框,,,要加载整个图片的像素点
options.inSampleSize = simpleSize;//指定加载图片的压缩比例
options.inPreferredConfig = Bitmap.Config.RGB_565;//设置图片的加载模式...565在内存中一个像素占2字节,,8888一个像素占4个字节
//Bitmap.Config.ALPHA_8;
//Bitmap.Config.ARGB_4444;
//Bitmap.Config.ARGB_8888
return BitmapFactory.decodeFile(path,options);//以...选项去解码图片文件,,,返回值是bitmap
}
相关文章推荐
- Android_Bitmap_图片的二次采样并生成缩略图
- 图片二次采样和按质量压缩
- 加载一张很大的图片 的时候可能会出现内存溢出,,,处理这张大图片...二次采样
- Android 图片二次采样、质量压缩
- 安卓图片二次采样的实现(http://cantellow.iteye.com/blog/838473)
- Bitmap二次采样处理图片
- bitmap 图片二次采样
- Bitmap图片二次采样
- 图片二次采样
- recyclerview瀑布流_图片二次采样
- Android_Bitmap_图片的二次采样并生成缩略图
- Bitmap的二次采样,异步加载网络图片到控件上
- 图片的二次采样
- 图片的二次采样,将已有的图片转为圆角或者圆形图片
- 图片的二次采样
- android图片二次采样(缩略图)
- 图片二次采样
- 图片二次采样
- 图片的二次采样
- android高级之图片二次采样