public class MainActivity extends AppCompatActivity {
private ImageView imageview;
private ImageView imageview1;
private String path=”/sdcard/Download/aa.png”;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageview= (ImageView) findViewById(R.id.image);
imageview1= (ImageView) findViewById(R.id.image_comp);
Bitmap bitmap= BitmapFactory.decodeFile(path);
showBitMap(bitmap);
imageview.setImageBitmap(bitmap);
//质量压缩
massCompression(bitmap,100,"aa_100.png");
//二级采样
doubleSampling();
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private void doubleSampling() {
//Option二次采样压缩的配置参数
BitmapFactory.Options options=new BitmapFactory.Options();
//加载Bitmap时 只加载图片的信息 边框 不加载图片本身
options.inJustDecodeBounds = true;
//把图片的信息 保存到options
BitmapFactory.decodeFile(path,options);
ViewGroup.LayoutParams lp = imageview1.getLayoutParams();
int imageWidth = lp.width;
int imageHeight= lp.height;
Log.e("bitmap", "onCreate: "+imageWidth+"---"+imageHeight);
//300 200
int size=1;
while(options.outWidth/size>imageWidth||options.outHeight/size>imageHeight){
size=size*2;
}
options.inSampleSize=size;
options.inJustDecodeBounds=false;
Bitmap bitmap = BitmapFactory.decodeFile(path,options);
showBitMap(bitmap);
massCompression(bitmap,30,"aa_30_1.png");
imageview1.setImageBitmap(bitmap);
}
private void massCompression(Bitmap bitmap,int quality,String fileName) {
String savePath = "/sdcard/Download/"+fileName;
try {
FileOutputStream fos=new FileOutputStream(savePath);
bitmap.compress(Bitmap.CompressFormat.JPEG,quality,fos);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private void showBitMap(Bitmap bitmap) {
int width= bitmap.getWidth();
int height =bitmap.getHeight();
int byteCount = bitmap.getByteCount();
int byteCount1 = bitmap.getRowBytes()*bitmap.getHeight();
Log.e("bitmap", "onCreate: "+width+"---"+height+"---"+byteCount+"---"+byteCount1);
}
}