public class BitMapUtils {
public static Bitmap zipBitMap(String filePath) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(filePath, options);
options.inSampleSize = computSampleSize(options, 200, 320);
options.inJustDecodeBounds = false;
return BitmapFactory.decodeFile(filePath,options);
}
private static int computSampleSize(BitmapFactory.Options options, int w, int h) {
int width = options.outWidth;
int height = options.outHeight;
int inSqmpleSize = 1;
if (width > w || height > h) {
int zipSizeWidth = Math.round(width / w);
int zipSizeHeight = Math.round(height / h);
inSqmpleSize = zipSizeWidth < zipSizeHeight ? zipSizeWidth : zipSizeHeight;
}
return inSqmpleSize;
}
}
options.inSampleSize = computSampleSize(options, 200, 320);
- 上面的代码我只是一个简单的demo,我只是简单的将压缩后的大小设置为了200*320的尺寸
- 其实我们在实际使用中可以将显示该bitmap的对象一起传递进来,来根据控件的尺寸压缩图片,就像这样
int width = imageView.getWidth();
int height = imageView.getHeight();
Display currentDisplay = getWindowManager().getDefaultDisplay()
int dw = currentDisplay.getWidth()
int dh = currentDisplay.getHeight()
- 下面是逻辑代码,我们点击按钮,就会进行图片的压缩
- 同时将压缩前后的图片的大小字节数吐司出来,证明我们的图片确实被压缩了
public class MainActivity extends AppCompatActivity implements OnClickListener {
private Button button_getImg, button_zipImg;
private ImageView imageView;
private GridView gridView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
initListener();
}
private void initListener() {
button_zipImg.setOnClickListener(this);
button_getImg.setOnClickListener(this);
}
private void init() {
button_getImg = (Button) findViewById(R.id.button_gitImg);
button_zipImg = (Button) findViewById(R.id.button_zipImg);
imageView = (ImageView) findViewById(R.id.imageView);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button_gitImg:
Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/1.png");
Toast.makeText(MainActivity.this, "原图的大小" + bitmap.getByteCount(), Toast.LENGTH_SHORT).show();
imageView.setImageBitmap(bitmap);
break;
case R.id.button_zipImg:
Bitmap bitmap1 = BitMapUtils.zipBitMap(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/1.png");
Toast.makeText(MainActivity.this, "压缩的大小" + bitmap1.getByteCount(), Toast.LENGTH_SHORT).show();
imageView.setImageBitmap(bitmap1);
break;
}
}
}
![这里写图片描述](https://img-blog.csdn.net/20160509230538037)