最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

本文實(shí)例講述了Android開發(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)保證大?。?/p>

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開發(fā)入門與進(jìn)階教程》、《Android調(diào)試技巧與常見問(wèn)題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)

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

相關(guān)文章

  • Android測(cè)試方法總結(jié)

    Android測(cè)試方法總結(jié)

    在這篇文章中我們給大家總結(jié)了Android測(cè)試方法以及需要注意的地方,有興趣的朋友參考學(xué)習(xí)下。
    2018-07-07
  • 深入理解Android中的建造者模式

    深入理解Android中的建造者模式

    建造者模式將一個(gè)復(fù)雜的構(gòu)建與其表示相分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。所以這篇文章主要介紹了Android中的建造者模式,有需要的朋友們可以參考借鑒。
    2016-09-09
  • 設(shè)置界面開發(fā)Preference Library數(shù)據(jù)重建機(jī)制詳解

    設(shè)置界面開發(fā)Preference Library數(shù)據(jù)重建機(jī)制詳解

    這篇文章主要為大家介紹了設(shè)置界面開發(fā)利器Preference Library數(shù)據(jù)重建機(jī)制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Android入門之使用OKHttp多線程下載文件

    Android入門之使用OKHttp多線程下載文件

    OkHttp是一個(gè)神器。OkHttp分為異步、同步兩種調(diào)用。今天我們就會(huì)基于OkHttp的異步調(diào)用實(shí)現(xiàn)一個(gè)多線程并行下載文件并以進(jìn)度條展示總進(jìn)度的實(shí)用例子,需要的可以參考一下
    2023-01-01
  • Android Activity的4種啟動(dòng)模式圖文介紹

    Android Activity的4種啟動(dòng)模式圖文介紹

    這篇文章主要給大家介紹了關(guān)于Android Activity的4種啟動(dòng)模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Android實(shí)現(xiàn)手機(jī)震動(dòng)效果

    Android實(shí)現(xiàn)手機(jī)震動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)手機(jī)震動(dòng)效果的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • android中的adb命令學(xué)習(xí)

    android中的adb命令學(xué)習(xí)

    這篇文章介紹了android中的adb命令,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • Android開發(fā)實(shí)現(xiàn)高仿優(yōu)酷的客戶端圖片左右滑動(dòng)切換功能實(shí)例【附源碼下載】

    Android開發(fā)實(shí)現(xiàn)高仿優(yōu)酷的客戶端圖片左右滑動(dòng)切換功能實(shí)例【附源碼下載】

    這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)高仿優(yōu)酷的客戶端圖片左右滑動(dòng)切換功能,結(jié)合實(shí)例形式分析了Android基于ViewPager實(shí)現(xiàn)圖片切換效果的相關(guān)操作技巧,并附帶完整工程源碼供讀者下載參考,需要的朋友可以參考下
    2017-11-11
  • Android利用Gson解析嵌套多層的Json的簡(jiǎn)單方法

    Android利用Gson解析嵌套多層的Json的簡(jiǎn)單方法

    下面小編就為大家?guī)?lái)一篇Android利用Gson解析嵌套多層的Json的簡(jiǎn)單方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • Android實(shí)現(xiàn)粒子雨效果

    Android實(shí)現(xiàn)粒子雨效果

    這篇文章主要介紹了Android實(shí)現(xiàn)粒子雨效果的制作過(guò)程,粒子雨效果,主要用到繪畫線條和多線程,其中的抽象類設(shè)計(jì)方法值得學(xué)習(xí),感興趣的小伙伴們可以參考一下
    2016-01-01

最新評(píng)論

抚远县| 土默特左旗| 丰城市| 深水埗区| 依兰县| 克拉玛依市| 个旧市| 峡江县| 神池县| 邳州市| 阿合奇县| 兰坪| 翁牛特旗| 商水县| 舒城县| 丁青县| 竹北市| 建湖县| 长沙县| 清丰县| 马山县| 读书| 无极县| 张家界市| 乌拉特中旗| 义乌市| 剑河县| 来安县| 深水埗区| 来凤县| 托里县| 广水市| 屯昌县| 修文县| 寻乌县| 揭阳市| 秭归县| 绵竹市| 乌鲁木齐县| 巴里| 福鼎市|