亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android開(kāi)發(fā)之圖片壓縮實(shí)現(xiàn)方法分析

 更新時(shí)間:2019年03月22日 09:59:49   作者:水中魚(yú)之1999  
這篇文章主要介紹了Android開(kāi)發(fā)之圖片壓縮實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Android圖片壓縮的原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Android開(kāi)發(fā)之圖片壓縮實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

由于Android本身的機(jī)制限定 由于系統(tǒng)對(duì)每個(gè)應(yīng)用內(nèi)存分配規(guī)則的限制,如果加載過(guò)大圖片很有可能會(huì)導(dǎo)致OOM

即閃退或者卡屏現(xiàn)象

但是手機(jī)上拇指大小的圖片,超清是完全沒(méi)有必要的

這是我們就需要對(duì)

對(duì)片進(jìn)行壓縮處理:

大多數(shù)人采用先生成bitmap對(duì)象,反復(fù)壓縮bitmap至100k一下的方法,對(duì)圖片進(jìn)行反復(fù)壓縮,但如果是超級(jí)大圖,bitmap生成本身就已經(jīng)會(huì)導(dǎo)致OOM,所以我們應(yīng)先對(duì)bitmap進(jìn)行設(shè)置:

public static Bitmap ChangeXY(Scenic scenic, Activity activity){
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 6;
    options.inPreferredConfig = Bitmap.Config.RGB_565;
    options.inPurgeable = true;
    options.inInputShareable = true;
    Bitmap bitmap = BitmapFactory.decodeResource(activity.getResources(),scenic.getImageId(),options);
    if (bitmap.getRowBytes() * bitmap.getHeight() > 1024 ){
      bitmap = compressImage(bitmap);
    }
    return bitmap;
}

options.inSampleSize = 6;設(shè)置 是的原圖大小被縮小2*6=12倍

這里我解釋一下Scenic和activity:

一、senic是我自定義的一個(gè)類,其中定義了一個(gè)數(shù)據(jù)成員:imageId 用來(lái)存/drawable文件夾下,一張圖片的id。(注:不同senic對(duì)象,代表不同圖片,所以存的圖片id不同)。

二、關(guān)于activity:由于圖像處理的方法與主活動(dòng)無(wú)關(guān),所以我這里將其封裝在一個(gè)特定靜態(tài)類中,但是由于執(zhí)行過(guò)程中需要使用著獲得(Activity類對(duì)象)的方法,所以將主活動(dòng)作為一個(gè)參數(shù)(activity)傳入。再M(fèi)ainActivity中activity這樣賦值:activity=MainActivity.this

之后再采用反復(fù)壓縮bitmap來(lái)保證大小:

private static Bitmap compressImage(Bitmap image) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//質(zhì)量壓縮方法,這里100表示不壓縮,把壓縮后的數(shù)據(jù)存放到baos中
    int options = 100;
    while ( baos.toByteArray().length / 1024>100) { //循環(huán)判斷如果壓縮后圖片是否大于100kb,大于繼續(xù)壓縮
      baos.reset();//重置baos即清空baos
      image.compress(Bitmap.CompressFormat.JPEG, options, baos);//這里壓縮options%,把壓縮后的數(shù)據(jù)存放到baos中
      options -= 50;//每次都減少10
    }
    ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());//把壓縮后的數(shù)據(jù)baos存放到ByteArrayInputStream中
    Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);//把ByteArrayInputStream數(shù)據(jù)生成圖片
    return bitmap;
}

如下圖中的圖片,原大小為8.10MB:

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android圖形與圖像處理技巧總結(jié)》、《Android開(kāi)發(fā)入門與進(jìn)階教程》、《Android調(diào)試技巧與常見(jiàn)問(wèn)題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • listview 選中高亮顯示實(shí)現(xiàn)方法

    listview 選中高亮顯示實(shí)現(xiàn)方法

    當(dāng)點(diǎn)擊左側(cè)ListView后,選中的一行就會(huì)一直呈高亮狀態(tài)顯示,圖中選中行字的顏色顯示為藍(lán)色(注意:是選中行后一直高亮,而不是只是點(diǎn)擊時(shí)高亮),如果再次點(diǎn)擊另外的一行, 則新的那一行就高亮,下面就來(lái)實(shí)現(xiàn)這個(gè)高亮效果的顯示
    2012-11-11
  • Android 一鍵清理、內(nèi)存清理功能實(shí)現(xiàn)

    Android 一鍵清理、內(nèi)存清理功能實(shí)現(xiàn)

    這篇文章主要介紹了Android 一鍵清理、內(nèi)存清理功能實(shí)現(xiàn),非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2017-01-01
  • 詳解Android使用Gradle統(tǒng)一配置依賴管理

    詳解Android使用Gradle統(tǒng)一配置依賴管理

    本篇文章主要介紹了詳解Android 使用 Gradle 統(tǒng)一配置依賴管理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Android RadarView雷達(dá)圖(蜘蛛網(wǎng)圖)的實(shí)現(xiàn)代碼

    Android RadarView雷達(dá)圖(蜘蛛網(wǎng)圖)的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Android RadarView雷達(dá)圖(蜘蛛網(wǎng)圖)的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Android仿微信選擇圖片和拍照功能

    Android仿微信選擇圖片和拍照功能

    這篇文章主要為大家詳細(xì)介紹了Android仿微信選擇圖片和拍照功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • android開(kāi)發(fā)實(shí)現(xiàn)列表控件滾動(dòng)位置精確保存和恢復(fù)的方法(推薦)

    android開(kāi)發(fā)實(shí)現(xiàn)列表控件滾動(dòng)位置精確保存和恢復(fù)的方法(推薦)

    下面小編就為大家?guī)?lái)一篇android開(kāi)發(fā)實(shí)現(xiàn)列表控件滾動(dòng)位置精確保存和恢復(fù)的方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Android新建Activity的方法

    Android新建Activity的方法

    這篇文章主要介紹了Android新建Activity的方法,結(jié)合實(shí)例形式分析了Android新建Activity的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-04-04
  • Android應(yīng)用App更新實(shí)例詳解

    Android應(yīng)用App更新實(shí)例詳解

    現(xiàn)在一般的Android軟件都是需要不斷更新的,當(dāng)你打開(kāi)某個(gè)app的時(shí)候,如果有新的版本,它會(huì)提示你有新版本需要更新。該項(xiàng)目實(shí)現(xiàn)的就是這個(gè)功能。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • Android實(shí)現(xiàn)樹(shù)形層級(jí)ListView

    Android實(shí)現(xiàn)樹(shù)形層級(jí)ListView

    這篇文章主要介紹了Android實(shí)現(xiàn)樹(shù)形層級(jí)ListView的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • Android自定義attr的各種坑

    Android自定義attr的各種坑

    開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)自定義View來(lái)實(shí)現(xiàn)各種各樣炫酷的效果,在實(shí)現(xiàn)這些效果的同時(shí),我們往往會(huì)定義很多attr屬性這篇文章主要介紹了Android自定義attr的各種坑,需要的朋友可以參考下
    2016-04-04

最新評(píng)論