日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
android圖片加載,安卓圖片加載

Android加載大圖

首先,存儲(chǔ)在磁盤上的圖片是被壓縮過的(以JPG,PNG或類似的格式存儲(chǔ))。 一旦將圖片加載到內(nèi)存中,它就不再被壓縮,并占用盡可能多的圖片的所有像素所需的內(nèi)存空間。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比靖安網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式靖安網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋靖安地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

其次,加載大圖的步驟:

1.獲取圖片的寬和高:BitmapFactory.Options

BitmapFactory可以為我們提供圖片的元數(shù)據(jù)。我們可以使用這個(gè)類來實(shí)現(xiàn)第一步。

BitmapFactory.Options options = new BitmapFactory.Options();

options.inJustDecodeBounds =true;//不想將圖片加載到內(nèi)存中。獲取圖片的相關(guān)信息(寬度,高度等),并使用這些信息來計(jì)算縮放比例。

BitmapFactory.decodeResource(getResources(), R.mipmap.hqimage, options);

2.根據(jù)圖片的寬和高計(jì)算縮放比Reducing Image Size (In Memory)

:現(xiàn)在我們需要計(jì)算 inSampleSize 。其是BitmapFactory.Options類的一個(gè)屬性,用于設(shè)置圖片的縮放比。

如果我們有一張尺寸為1000x1000的圖片,并且在解碼之前設(shè)置inSampleSize的值為2, 那么解碼之后,我們將得到一張尺寸為500x500的圖片。

BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds =true;options.inSampleSize = 3; BitmapFactory.decodeResource(getResources(), R.mipmap.hqimage, options);

注意:inSampleSize 設(shè)置為 5 , 最終 會(huì)被 取整為 4

3.根據(jù)縮放比將圖片加載到內(nèi)存中。Reducing Image Size (In Disk)

我們還可以使用Bitmap的 compress 方法對(duì)磁盤上的圖片進(jìn)行壓縮。我們來看看在不改變圖片質(zhì)量的情況下圖片被壓縮后的大小。? 100 表示與原圖保持相同的質(zhì)量。

ByteArrayOutputStream bos = new ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos);

byte[] bitmapdata = bos.toByteArray();

通過計(jì)算得到圖片在磁盤上的大小為1.6 MB。

我們把compress方法中的質(zhì)量參數(shù)改為50,并再次計(jì)算圖片大小

bitmap.compress(Bitmap.CompressFormat.JPEG, 50, bos);

通過計(jì)算得到圖片在磁盤上的大小為24.4 KB。

注意 :在改變compress方法中的質(zhì)量參數(shù)的時(shí)候,壓縮格式應(yīng)該是.JPEG。設(shè)置為PNG格式的時(shí)候,修改是無效的。

Android 圖片加載(一)高效加載Bitmap 基礎(chǔ)篇

由于Bitmap的特殊性以及Android對(duì)單個(gè)應(yīng)用所規(guī)定的最大內(nèi)存限制,我們?cè)谕瑫r(shí)加載大量Bitmap時(shí)很容易發(fā)生內(nèi)存溢出,即我們通常所說的OutOfMemoryError(OOM),因此高效加載Bitmap就成為了每個(gè)Android開發(fā)者的必備技能。

在學(xué)習(xí)如何高效地加載Bitmap之前,首先介紹一下如何加載一個(gè)Bitmap。我們都知道,Bitmap在Android中通常指的是一張圖片,那么如何將JPG、PNG等格式的圖片轉(zhuǎn)換成Bitmap對(duì)象呢?BitmapFactory類給我們提供了一些方法:

接下來開始介紹如何高效地加載Bitmap,其實(shí)核心思想很簡(jiǎn)單: 就是采用BitmapFactory.Options參數(shù)來調(diào)整圖片尺寸來適配控件的大小。

假如我們顯示圖片的控件ImageView寬高為100×100像素,而圖片的尺寸為1024×1024像素,這個(gè)時(shí)候如果將整個(gè)圖片加載進(jìn)來并顯示到控件上,自然是很占用內(nèi)存資源的。這個(gè)時(shí)候可以通過BitmapFactory.Options按一定的采樣率加載縮小后的圖片,再將縮小后的圖片顯示到ImageView中,這樣就能減小內(nèi)存占用從而在一定程度上避免OOM的發(fā)生。

通過BitmapFactory.Options來縮放圖片,主要是使用它的inSampleSize參數(shù),也就是前面提到的采樣率。當(dāng)采樣率inSampleSize為1時(shí),采樣后的圖片大小為原圖大??;當(dāng)采樣率inSampleSize1,比如為2時(shí),采樣后的圖片寬高都為原圖的1/2,即像素降為原圖的1/4,占用的內(nèi)存大小也就是原圖的1/4;比較特殊的是,當(dāng)采樣率inSampleSize1時(shí),系統(tǒng)會(huì)自動(dòng)將該值當(dāng)做1來處理。 因此可以得出一個(gè)結(jié)論:采樣率inSampleSize必須是大于1的整數(shù)圖片才會(huì)有縮小的效果,并且采樣率同時(shí)作用于寬高,也就是說采樣后的圖片會(huì)縮小到原圖的1/(inSampleSize^2)。比如inSampleSize=4,那么縮放比例為1/16。

我們現(xiàn)在知道了,通過采樣率可以提高圖片的加載效率,那么如何才能計(jì)算出最合適的采樣率?我們可以按照如下流程:

接下來以decodeFile方法為例實(shí)現(xiàn)圖片的縮放,其他三個(gè)方法處理方式類似。

下一篇: Android 圖片加載(二)圖片加載框架Glide 入門篇

《Android開發(fā)藝術(shù)探索》

每日一問(二十三)Android 如何加載加載大圖長(zhǎng)圖

1.展示高分辨率圖片的時(shí)候,最好先將圖片進(jìn)行壓縮

2.比例大小壓縮

3.質(zhì)量壓縮

4.使用圖片壓縮庫(kù)進(jìn)行壓縮

5.如果加載的圖片太大,手機(jī)屏幕顯示不完,使用局部加載


網(wǎng)站題目:android圖片加載,安卓圖片加載
標(biāo)題鏈接:http://www.dlmjj.cn/article/dsgeids.html