Android bitmap用法介紹

2021-08-02 15:11:31 字數 1731 閱讀 5359

bitmap是android中重要的影象處理工具類,通過bitmap可以對影象進行剪下、旋轉、縮放等操作,同時還可以指定格式和壓縮質量儲存影象檔案。

一、拿到乙個bitmap物件

檢視原始碼我們知道,bitmap被final修飾,因此不可以通過new來獲得乙個bitmap的例項,獲得乙個bitmap物件一般都是通過bitmapfactory來獲得,主要有以下幾方式。

每乙個方法都有自己的過載方法,過載方法多出的引數是options,解釋一下這個引數,這個主要是對生成bitmap物件做一些簡單的處理。

inpreferredconfig 指定decode到記憶體中,手機中所採用的編碼,可選值定義在bitmap.config中。預設值是argb_8888。

injustdecodebounds 如果設定為true,並不會把影象的資料完全解碼,亦即decodexyz()返回值為null,但是options的outabc中解出了影象的基本資訊。

insamplesize 設定decode時的縮放比例。當值大於1時會對影象進行壓縮,比如設定為4時,返回的影象寬高都將是原始影象的四分之一,畫素是原始影象的十六分之一,如果設定的值小於1,則會被當作1來處理。注意,這裡設值必須是2的次冪,其他值會被就近取離2的次冪最近的值。

通過option的這些屬性,我們就可以獲得一張的縮圖啦,乙個基本思路是先設定injustdecodebounds為true,拿到影象的基本資訊,比如寬和高,根據基本資訊結合縮圖目標寬高,算出insamplesize ,然後再設定injustdecodebounds為false,獲得縮圖。

想要獲得乙個bitmap物件,可以通過乙個影象的完整路徑,或者是通過乙個位元組流或者是通過位元組亦或者是通過本地的資源檔案,都可以獲得乙個bitmap物件。

if (environment.getexternalstoragestate().equals(

environment.media_mounted))

二,儲存影象檔案

拿到了bitmap之後可以直接顯示出來,也可以先儲存到本地等待處理,bitmap可以儲存為jpg,png,gif等格式,儲存方式也是非常簡單:

//0意味著壓縮到最小,100意味著壓縮後的質量最好,png是無損影象,會忽略這個引數

// bp.compress(bitmap.compressformat

.jpeg, 100, out);

bp.compress(bitmap.compressformat

.png, 0, out);

out.flush();

out.close();

直接呼叫compress方法,第乙個引數表示壓縮的方式,有多種,png屬於無失真壓縮,jpeg是有失真壓縮。第二個引數表示壓縮質量,取值為0-100,100表示壓縮影象質量最高,但同時壓縮率低,0表示壓縮影象質量最差,同時壓縮率高。但是,這個引數是否有效與第乙個引數有關,如果第乙個引數選擇了png,及無失真壓縮,那麼第二引數是無效的。第三個引數是你要輸出的位元組流。

android bitmap記憶體處理

程式中一次性載入多張,而且還要適應螢幕,這就造成記憶體緊張,程序會出現oom,特別是現在的手機解析度高達1920 1024,一張占用記憶體高達8m,首先要獲取原的高寬 減少記憶體 bitmapfactory.options options new bitmapfactory.options opti...

Android Bitmap應用收集

bitmap代表一張位圖,副檔名可以是.bmp或者.dib。點陣圖是windows標準格式圖形檔案,它將影象定義為由點 畫素 組成,每個點可以由多種色彩表示,包括2 4 8 16 24和32位色彩。例如,一幅1024 768解析度的32位真彩,其所佔儲存位元組數為 1024 768 32 8 307...

Android bitmap上面寫字

方法1 bitmap bitmap public bitmap drawtexttobitmap context mcontext,bitmap bit,string mtext,string str3 bitmap bitmap copy bitmapconfig,true canvas canv...