圖片壓縮就是為了避免我們內(nèi)存的溢出。而BitMap是android系統(tǒng)中對圖像處理最重要的一個類,所以我們可以用他來對圖像進行剪切,壓縮,一系列操作。常用的壓縮方法有質(zhì)量壓縮,采樣率壓縮,縮放法壓縮,RGB_565壓縮等。
質(zhì)量壓縮
質(zhì)量壓縮不會減少圖片的像素,他是在保持像素的前提下來改變圖片的透明度,但是圖片的長,寬,像素都不會變,所以他占用的內(nèi)存也不會改變。
采樣率壓縮
采樣率壓縮其實就是縮放bitamp的尺寸,通過調(diào)節(jié)其inSampleSize參數(shù),比如調(diào)節(jié)為2,寬高會為原來的1/2,寬高都減少了,內(nèi)存自然也就減少了。
縮放法壓縮
放縮法壓縮使用的是通過矩陣對圖片進行裁剪,也是通過縮放圖片尺寸,來達到壓縮圖片的效果,和采樣率的原理一樣
RGB_565壓縮
這是通過壓縮像素占用的內(nèi)存來達到壓縮的效果,一般不建議使用ARGB_4444,因為畫質(zhì)實在是辣雞,如果對透明度沒有要求,建議可以改成RGB_565,相比ARGB_8888將節(jié)省一半的內(nèi)存開銷。
圖片二次采樣壓縮
1.第一次采樣
inJustDecodeBounds設(shè)置為ture,只會加載圖片的邊框,不會加載圖片的具體內(nèi)容。
2.根據(jù)原圖的寬高,結(jié)合控件的寬高計算出縮放比例,然后通過inSamplesize(in 三pou Size)對圖片進行尺寸的縮放。
3.二次采樣時需要將圖片加載出來顯示,不能只加載圖片的框架,因此inJustDecodeBounds屬性要設(shè)置為false。