在某些功能的实现中,会对图片大小有限制,比如网络传输,或者分享时显示的图标等等,但是用户未必会按照我们的要求进行提供,这个时候,我们需要对用户提供的图片进行压缩,那么应该如果进行压缩呢?
第一种情况,是限制像素大小
/**
*
* @param img 图片
* @param maxSize 可接受位图的像素最大大小,如可以传 1080*720
* @return
* @Function
* @TODO TODO
*/
public static Bitmap getThumbBmp(Bitmap img, long maxSize){
float r = (float)(img.getHeight()) / (float)(img.getWidth());
int newWidth = (int)Math.sqrt((float)maxSize/r);
int newHeight = (int)(newWidth*r);
Bitmap thumbBmp = Bitmap.createScaledBitmap(img, newWidth, newHeight, true);
return thumbBmp;
}
这样就会等比压缩,另外在Bitmap.createScaledBitmap 中有一个fillter布尔值,一般选择true,这样图片不会失真太严重。