bitmap compress 是官方給出的圖片質量壓縮,經過試驗學習了這個壓縮的特性以下:學習
它是圖片質量壓縮,不會改變圖片的分辨率測試
bitmap.compress(Bitmap.CompressFormat.JPEG, option, bos);
三個參數說明,1.圖片壓縮後的格式 2.圖片壓縮比例 3.壓縮後獲得的數據code
這個方法會使圖片壓縮可是,因爲是質量壓縮,bitmap不會變小,也就是內存依然大,壓縮的數據確實變小使用的時候得注意了內存溢出問題orm
測試方法以下:圖片
System.out.println("bitmap=="+bitmap.getByteCount()); ByteArrayOutputStream bos = new ByteArrayOutputStream(); //經過這裏改變壓縮類型,其有不一樣的結果 int option = 100; while (option > 0) { bitmap.compress(Bitmap.CompressFormat.JPEG, option, bos); System.out.println("bos=====" + bos.size()); option-=10; bos.reset(); } System.out.println("bitmap==" + bitmap.getByteCount()); bitmap.recycle(); ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); System.out.println("bis====="+bis.available()); bitmap = BitmapFactory.decodeStream(bis); System.out.println("bitmap=="+bitmap.getByteCount()); imageView.setImageBitmap(bitmap);
若是確實要節約內存內存
就是用以下方法:get
ByteArrayOutputStream out = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, 100, out); BitmapFactory.Options newOpts = new BitmapFactory.Options(); int be = 2;//壓縮比例,能夠本身經過分辨率去計算須要的比例值 newOpts.inSampleSize = be; ByteArrayInputStream isBm = new ByteArrayInputStream(out.toByteArray()); Bitmap bitmap = BitmapFactory.decodeStream(isBm, null , null );