11.图片压缩处理:
- /** * 对图片进行压缩,主要是为了解决控件显示过大图片占用内存造成OOM问题。
- * 一般压缩后的图片大小应该和用来展示它的控件大小相近。 * @param context 上下文
- * @param resId 图片资源Id * @param reqWidth 期望压缩的宽度
- * @param reqHeight 期望压缩的高度 * @return 压缩后的图片
- */ public static Bitmap compressBitmapFromResourse(Context context, int resId, int reqWidth, int reqHeight) {
- final BitmapFactory.Options options = new BitmapFactory.Options(); /*
- * 第一次解析时,inJustDecodeBounds设置为true, * 禁止为bitmap分配内存,虽然bitmap返回值为空,但可以获取图片大小
- */ options.inJustDecodeBounds = true;
- BitmapFactory.decodeResource(context.getResources(), resId, options); 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 = heightRatio < widthRatio ? heightRatio : widthRatio;
- } options.inSampleSize = inSampleSize;
- //使用计算得到的inSampleSize值再次解析图片 options.inJustDecodeBounds = false;
- return BitmapFactory.decodeResource(context.getResources(), resId, options); }










