用Glide-圖片的壓縮-圖片壓縮原理

前言:

這一節裏面我們將介紹Glide如何對圖片進行壓縮,這一點在加載圖片較多或者加載的圖片像素很高的程序裏面至關重要

Glide 系列目錄

1.Android圖片顯示相關知識

這裏會講一下圖片顯示相關的基礎知識,如果不關心的可以直接跳到第二點,不過建議是最好看一下


1.1圖片質量分類

安卓圖片顯示的質量配置主要分爲四種:

  • ARGB_8888 :32位圖,帶透明度,每個像素佔4個字節
  • ARGB_4444 :16位圖,帶透明度,每個像素佔2個字節
  • RGB_565 :16位圖,不帶透明度,每個像素佔2個字節
  • ALPHA_8 :32位圖,只有透明度,不帶顏色,每個像素佔4個字節

(A代表透明度,RGB代表紅綠藍:即顏色)


1.2圖片默認質量

Picasso的默認質量是 ARGB_8888 
Glide的默認質量則爲 RGB_565


1.3佔用內存

加載一張4000 * 2000(一般手機拍攝的都超過這個像素)的圖片

Picasso需要佔用的內存爲: 32MB

4000 * 2000 * 4 / 1024 / 1024 = 30 (MB)

Glide需要佔用的內存爲: 16MB

4000 * 2000 * 2 / 1024 / 1024 = 15 (MB)

也就是說只要同時加載幾張圖片,你的應用就會OOM(內存溢出了),最恐怖的是就算你的ImageView的寬高只有10px,同樣會佔用那麼多內存,這就是爲什麼需要做圖片壓縮的原因了

2.圖片質量的壓縮或者提高

在Glide裏面默認用的是RGB_565,如果需要修改,相對於Picasso來說會更加麻煩一些,在之前的文章中,講到過如何修改Glide的圖片質量,這裏就不再做介紹了

通過GlideModule定製Glide 
http://blog.csdn.net/yulyu/article/details/55194237

3.圖片尺寸的壓縮或者拉伸(override)

通過調用override,就可以把圖片壓縮到相應的尺寸來顯示了,類似這些被處理過的圖片,就是之前文章中提到的RESULT(處理圖)

Glide.with(this).load(mUrl).override(300,300).into(mIv);

注意,這裏具體會壓縮到什麼尺寸還會根據很多條件來計算,所以最終壓縮的結果的寬高會比較接近你的傳值,但是不一定會完全相同,如果感興趣的可以期待本系列後面的Glide源碼解析中的具體介紹

(一般來說控件是什麼尺寸就傳入相應的寬高,這樣是比較適合的壓縮比例)

熱門文章

發佈了70 篇原創文章 · 獲贊 68 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章