android圖片的大小
1. android載入大圖片的時候如何防止內存溢出
【答案】:android系統給圖片分配的內存只有8M,當載入大量圖片時往往會出現OOM。
Android載入大量圖片內存溢出解決方案:
1)盡量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource來設置一張大圖,因為這些函數在完成decode後,最終都是通過java層的createBitmap來完成的,需要消耗更多內存,可以通過BitmapFactory.decodeStream方法,創建出一個bitmap,再將其設為ImageView的 source
2)使用BitmapFactory.Options對圖片進行壓縮
InputStream is = this.getResources().openRawResource(R.drawable.pic1);
BitmapFactory.Options ptions=new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = 10; //width,hight設為原來的十分一
Bitmap btp =BitmapFactory.decodeStream(is,null,options);
3)運用Java軟引用,進行圖片緩存,將需要經常載入的圖片放進緩存里,避免反復載入
及時銷毀不再使用的Bitmap對象
if(!bmp.isRecycle() ){
bmp.recycle() //回收圖片所佔的內存
system.gc() //提醒系統及時回收
}
2. android圖片壓縮庫-說說在Android中如何壓縮圖片
Android黑科技,圖片終極壓縮一、支持自定義配置、不失真和批量處理
二、圖片上傳為什麼要壓縮
1、圖片伺服器空間限制,磁碟昂貴
2、網路不穩定,大文件需要斷點續傳
3、盡可能避免安卓OOM異常
4、後台約定的規則<200KB
5、需要上傳原圖的應用有醫院臨床項目、金融銀行
三、圖片壓縮流程
1、遞歸每張圖片
2、設置圖片格式
png,jpg,webp
3、質量壓縮(format,quality,baos)
由於png是無損壓縮,所以設置quality無效(不適合作為縮略圖)
采樣率壓縮
縮小圖片解析度,減少所佔用磁碟空間和內存大小
縮放壓縮(bitmap,null,rectF,null)
減少圖片的像素,降低所佔用磁碟空間大小和內存大小,可用於緩存縮略圖
JNI調用JPEG庫
Android的圖片引擎使用的是閹割版的skia引擎,去掉了圖片壓縮中的哈夫曼演算法
4、像素修復
5、返回壓縮
6、完成壓縮
demo:
參考:
Luban框架
缺點
1、當沒有設定壓縮路徑時,拋異常無閃退
2、源碼中,壓縮比率固定值60,無法修改
3、壓縮配置,參數不太適應真實項目需求
4、不能指定壓縮大小,比如100KB以內
說說在Android中如何壓縮圖片目前存在兩種壓縮圖片方式:
而圖片有三種存在形式:
bigmap在內存中的大小是按像素計算的,也就是width*height,所以如果需要在Android中顯示照片,那麼就必須進行按比例壓縮,避免因為內存消耗過大,導致APP退出。
是不是很簡單呀O(∩_∩)O哈哈~
Android圖片壓縮-大小與質量壓縮以及圖片保存一、前言:
2.質量壓縮
注意:
第二次壓縮之前都要先清空();再進行壓縮(,quality,baos);
有時候我們採用質量壓縮沒有效果,有可能是每次壓縮的質量過小,所以我們可以嘗試修改壓縮質量(quality)是10;
quality壓縮機提示,0-100。0表示壓縮
小尺寸,100意味著最大質量的壓縮。一些
格式,如無損的PNG,將忽略質量設定;
3.混合方式壓縮
鏈接: