对用户上传的头像,我故意放了几个2M左右大小的图片,其实显示到app上的时候,其实也就60*60左右大小的地方,用模拟器运行的时候显示流量都是几兆几兆的,有时还会OOM。看了网上教程,用bitmapFactory.options 中的inSampleSize等一些缩放图片的方法,是没有OOM了,但是在加载图片的时候流量还是上兆的,感觉图片缩放以后大小并没有改变,就是图片还是上兆的。有没有什么方法可以真正有效缩放图片,比如用户上传的原始头像是1000*1000的1M的图片,缩放到100*100的时候就变成了10KB了?
------解决方案--------------------
截取啊。http://chroya.iteye.com/blog/710262
------解决方案--------------------
/**
* 保存缩略图
*
* @param bitmap
*/
private void saveThumbnails(Bitmap bitmap) {
Bitmap smallBitmap = thumbnailWithImageWithoutScale(bitmap);
String filePath = new File(SharePre.getThumbnailsFilePath(this) + "/" + selectImgName).getPath();
try {
FileOutputStream fout = new FileOutputStream(filePath);
smallBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fout);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获得缩略图
*
* @param originalBitmap
* @return
*/
private Bitmap thumbnailWithImageWithoutScale(Bitmap originalBitmap) {
Display display = getWindowManager().getDefaultDisplay();
int height = display.getHeight();
int SCALE;// 缩略图大小
switch (height) {
case 1080:
SCALE = 300;
break;
case 1920:
SCALE = 600;
break;
default:
SCALE = 150;
break;
}
// 得到缩略图
Bitmap bitmap = ThumbnailUtils.extractThumbnail(originalBitmap, SCALE, SCALE, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
return bitmap;
}
主要在于Bitmap的compress方法和ThumbnailUtils.extractThumbnail不知是否对你有帮助