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

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

二、關(guān)于activity:由于圖像處理的方法與主活動(dòng)無(wú)關(guān),所以我這里將其封裝在一個(gè)特定靜態(tài)類(lèi)中,但是由于執(zhí)行過(guò)程中需要使用著獲得(Activity類(lèi)對(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)容感興趣的讀者可查看本站專(zhuān)題:《Android圖形與圖像處理技巧總結(jié)》、《Android開(kāi)發(fā)入門(mén)與進(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)文章

  • 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è)置界面開(kāi)發(fā)Preference Library數(shù)據(jù)重建機(jī)制詳解

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

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

    Android入門(mén)之使用OKHttp多線(xiàn)程下載文件

    OkHttp是一個(gè)神器。OkHttp分為異步、同步兩種調(diào)用。今天我們就會(huì)基于OkHttp的異步調(diào)用實(shí)現(xiàn)一個(gè)多線(xiàn)程并行下載文件并以進(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開(kāi)發(fā)實(shí)現(xiàn)高仿優(yōu)酷的客戶(hù)端圖片左右滑動(dòng)切換功能實(shí)例【附源碼下載】

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

    這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)高仿優(yōu)酷的客戶(hù)端圖片左右滑動(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ò)程,粒子雨效果,主要用到繪畫(huà)線(xiàn)條和多線(xiàn)程,其中的抽象類(lèi)設(shè)計(jì)方法值得學(xué)習(xí),感興趣的小伙伴們可以參考一下
    2016-01-01

最新評(píng)論

三江| 江孜县| 万全县| 广平县| 故城县| 浙江省| 共和县| 全南县| 哈巴河县| 二连浩特市| 大埔县| 专栏| 株洲县| 柞水县| 巴彦淖尔市| 沙雅县| 额尔古纳市| 如皋市| 樟树市| 左贡县| 黑龙江省| 鄢陵县| 清涧县| 吉木乃县| 汉沽区| 乡宁县| 漳州市| 隆德县| 汉中市| 元氏县| 扶绥县| 清丰县| 河北省| 汉川市| 枣阳市| 伊通| 徐闻县| 湄潭县| 清新县| 崇左市| 莒南县|