


下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android實(shí)現(xiàn)圖片壓縮(bitmap的六種壓縮方式)
Android中圖片是以bitmap形式存在的,那么bitmap所占內(nèi)存,直接影響到了應(yīng)用所占內(nèi)存大小,首先要知道bitmap所占內(nèi)存大小計(jì)算方式:圖片長(zhǎng)度x圖片寬度x一個(gè)像素點(diǎn)占用的字節(jié)數(shù)以下是圖片的壓縮格式:其中,A代表透明度;R代表紅色;G代表綠色;B代表藍(lán)色。ALPHA_8
表示8位Alpha位圖,即A=8,一個(gè)像素點(diǎn)占用1個(gè)字節(jié),它沒(méi)有顏色,只有透明度
ARGB_4444
表示16位ARGB位圖,即A=4,R=4,G=4,B=4,一個(gè)像素點(diǎn)占4+4+4+4=16位,2個(gè)字節(jié)
ARGB_8888
表示32位ARGB位圖,即A=8,R=8,G=8,B=8,一個(gè)像素點(diǎn)占8+8+8+8=32位,4個(gè)字節(jié)
RGB_565
表示16位RGB位圖,即R=5,G=6,B=5,它沒(méi)有透明度,一個(gè)像素點(diǎn)占5+6+5=16位,2個(gè)字節(jié)我是用的小米手機(jī)2s來(lái)測(cè)試的,從sd卡取出一個(gè)照片,如下所示:出來(lái)的log是:
將取得的bitmap進(jìn)行壓縮,下面開(kāi)始說(shuō),bitmap的幾種壓縮方式。1.質(zhì)量壓縮其中quality是從edittext獲取的數(shù)字,可以從0–100改變,這里出來(lái)的log是:
可以看到,圖片的大小是沒(méi)有變的,因?yàn)橘|(zhì)量壓縮不會(huì)減少圖片的像素,它是在保持像素的前提下改變圖片的位深及透明度等,來(lái)達(dá)到壓縮圖片的目的,這也是為什么該方法叫質(zhì)量壓縮方法。那么,圖片的長(zhǎng),寬,像素都不變,那么bitmap所占內(nèi)存大小是不會(huì)變的。但是我們看到bytes.length是隨著quality變小而變小的。這樣適合去傳遞二進(jìn)制的圖片數(shù)據(jù),比如微信分享圖片,要傳入二進(jìn)制數(shù)據(jù)過(guò)去,限制32kb之內(nèi)。這里要說(shuō),如果是press(CompressFormat.PNG,quality,baos);這樣的png格式,quality就沒(méi)有作用了,bytes.length不會(huì)變化,因?yàn)閜ng圖片是無(wú)損的,不能進(jìn)行壓縮。CompressFormat還有一個(gè)屬性是,CompressFormat.WEBP格式,該格式是google自己推出來(lái)一個(gè)圖片格式,更多信息,文末會(huì)貼出地址。2.采樣率壓縮出來(lái)的log是設(shè)置inSampleSize的值(int類型)后,假如設(shè)為2,則寬和高都為原來(lái)的1/2,寬高都減少了,自然內(nèi)存也降低了。我上面的代碼沒(méi)用過(guò)options.inJustDecodeBounds=true;因?yàn)槲沂枪潭▉?lái)取樣的數(shù)據(jù),為什么這個(gè)壓縮方法叫采樣率壓縮,是因?yàn)榕浜蟟nJustDecodeBounds,先獲取圖片的寬、高【這個(gè)過(guò)程就是取樣】,然后通過(guò)獲取的寬高,動(dòng)態(tài)的設(shè)置inSampleSize的值。當(dāng)inJustDecodeBounds設(shè)置為true的時(shí)候,BitmapFactory通過(guò)decodeResource或者decodeFile解碼圖片時(shí),將會(huì)返回空(null)的Bitmap對(duì)象,這樣可以避免Bitmap的內(nèi)存分配,但是它可以返回Bitmap的寬度、高度以及MimeType。3.縮放法壓縮(martix)出來(lái)的log是
可以看出來(lái),bitmap的長(zhǎng)度和寬度分別縮小了一半,圖片大小縮小了四分之一。
關(guān)于martix更多信息,文末會(huì)有一個(gè)參考文章。4.RGB_565法出來(lái)的log是:
我們看到圖片大小直接縮小了一半,長(zhǎng)度和寬度也沒(méi)有變,相比argb_8888減少了一半的內(nèi)存。注意:由于ARGB_4444的畫(huà)質(zhì)慘不忍睹,一般假如對(duì)圖片沒(méi)有透明度要求的話,可以改成RGB_565,相比ARGB_8888將節(jié)省一半的內(nèi)存開(kāi)銷。5.createScaledBitmap出來(lái)的log是
這里是將圖片壓縮成用戶所期望的長(zhǎng)度和寬度,但是這里要說(shuō),如果用戶期望的長(zhǎng)度和寬度和原圖長(zhǎng)度寬度相差太多的話,圖片會(huì)很不清晰。總結(jié)以上就是5種圖片壓縮的方法,這里需要強(qiáng)調(diào),他們的壓縮僅僅只是對(duì)android中的bitmap來(lái)說(shuō)的。如果將這些壓縮后的bitmap另存為sd中,他們的內(nèi)存大小并不一樣。android手機(jī)中,圖片的所占的內(nèi)存大小和很多因素相關(guān),計(jì)算起來(lái)也很麻煩。為了計(jì)算出一個(gè)圖片的內(nèi)存大小,可以將圖片當(dāng)做一個(gè)文件來(lái)間接計(jì)算,用如下的方法:或者上面兩個(gè)方法計(jì)算的結(jié)果是一樣的??赐炅诉@篇
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑消防安裝工程施工分包合同
- 農(nóng)資互購(gòu)買賣合同書(shū)
- 個(gè)人房屋抵押貸款合同
- 單位物業(yè)承包合同
- 承運(yùn)方貨物運(yùn)輸合同
- 世界各大河流流量與水質(zhì)監(jiān)測(cè)數(shù)據(jù)表
- 預(yù)制梁安裝施工方案
- 進(jìn)水格柵施工方案范本
- 衛(wèi)星基站土建施工方案
- 濱州古建閣樓施工方案
- 統(tǒng)編版(2024)七年級(jí)下冊(cè)語(yǔ)文期末復(fù)習(xí):第一單元素養(yǎng)提升測(cè)試卷(含答案)
- 電網(wǎng)工程設(shè)備材料信息參考價(jià)(2024年第四季度)
- 食堂蔬菜品種及質(zhì)量標(biāo)準(zhǔn)
- Q∕SY 01004-2016 氣田水回注技術(shù)規(guī)范
- 《大數(shù)據(jù)分析與應(yīng)用》教學(xué)大綱
- FZW2812F(FDR)型用戶分界真空負(fù)荷開(kāi)關(guān)安裝使用說(shuō)明書(shū)完
- 股權(quán)轉(zhuǎn)讓委托書(shū)(6篇)
- 韓國(guó)出入境卡中韓文對(duì)照模板
- 五輥研磨機(jī)(課堂PPT)
- 二次函數(shù)求最值(動(dòng)軸定區(qū)間、動(dòng)區(qū)間定軸)(課堂PPT)
- 髖關(guān)節(jié)脫位2教學(xué)課件
評(píng)論
0/150
提交評(píng)論