Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android資訊 >> Android 圖片壓縮方法分析與學習

Android 圖片壓縮方法分析與學習

編輯:Android資訊

bitmap compress 是官方給出的圖片質量壓縮,通過試驗學習了這個壓縮的特性如下:

  1. 它是圖片質量壓縮,不會改變圖片的分辨率
  2. bitmap.compress(Bitmap.CompressFormat.JPEG, option, bos);

    三個參數說明,1.圖片壓縮後的格式 2.圖片壓縮比例 3.壓縮後得到的數據

  3. 這個方法會使圖片壓縮但是,由於是質量壓縮,bitmap不會變小,也就是內存依然大,壓縮的數據確實變小使用的時候得注意了內存溢出問題

測試方法如下:

 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);

如果確實要節約內存

就是用如下方法:

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 );
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved