源碼地址:https://git.oschina.net/chunling/TestApp.git
稍微解釋一下原理:
先定義一個(gè)方法getBitMapByte(byte[]data,intWidth,intHeight)里面的四個(gè)參數(shù)分別是:數(shù)據(jù)源的大小媳禁;自定義壓縮之后打?qū)挾却笮。蛔远x壓縮之后長度大小
這個(gè)方法返回值就是bitmap
步驟:1:先獲取BitmapFactory里的options屬性,主要研究options的屬性倆個(gè)
? ? ? ? ? ? 2:設(shè)置options.inJustDecodeBounds設(shè)置為true是否加載圖片的邊框信息不加載圖片內(nèi)容true就是內(nèi)容不加載
? ? ? ? ? ? 3:在通過options.inSampleSize()目標(biāo)壓縮尺寸進(jìn)行壓縮比率計(jì)算
? ? ? ? ? ? 4:最后在設(shè)置options.inJustDecodeBounds為false加載這時(shí)候的圖片內(nèi)容是壓縮過的
最重要的就是壓縮比例怎么計(jì)算离赫,這里谷歌官方給出了一個(gè)算法
壓縮算法
這里的outWidth/outHeight是原始的寬度和高度
在最后也可以設(shè)置options.inPreferredConfig這個(gè)屬性進(jìn)行壓縮;
這樣在調(diào)用這個(gè)方法適合就可以進(jìn)行自定義壓縮了粗截,想讓圖片變多小就自己設(shè)置了耸三,最后代碼也有詳細(xì)的解釋