/**
* 简单压缩
*
* @param is
* @return Bitmap
*/
public static Bitmap setOption(InputStream is) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = 10; // width,hight设为原来的十分一
Bitmap btp = BitmapFactory.decodeStream(is, null, options);
return btp;
}
/**
* 压缩图片方法
*
* @return Bitmap
* @param context
* @param file
*/
public static Bitmap setCompress(Activity context, File file) {
BitmapFactory.Options opt = new BitmapFactory.Options();
// 这个isjustdecodebounds很重要
opt.inJustDecodeBounds = true;
Bitmap bm = BitmapFactory.decodeFile(file.getPath(), opt);
// Log.i("tag", "w11=" + bm.getWidth());
// Log.i("tag", "h11=" + bm.getHeight());
// 获取到这个图片的原始宽度和高度
int picWidth = opt.outWidth;
int picHeight = opt.outHeight;
// 获取屏的宽度和高度
WindowManager windowManager = context.getWindowManager();
Display display = windowManager.getDefaultDisplay();
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();
// isSampleSize是表示对图片的缩放程度,比如值为2图片的宽度和高度都变为以前的1/2
opt.inSampleSize = 1;
// 根据屏的大小和图片大小计算出缩放比例
if (picWidth > picHeight) {
if (picWidth > screenWidth)
opt.inSampleSize = picWidth / screenWidth;
} else {
if (picHeight > screenHeight)
opt.inSampleSize = picHeight / screenHeight;
}
// 这次再真正地生成一个有像素的,经过缩放了的bitmap
opt.inJustDecodeBounds = false;
bm = BitmapFactory.decodeFile(file.getPath(), opt);
int w = bm.getWidth();
int h = bm.getHeight();
// Log.i("tag", bm.toString());
// Log.i("tag", "w22=" + w);
// Log.i("tag", "h22=" + h);
// 用imageview显示出bitmap
// im1.setImageBitmap(bm);
return bm;
}