導航:首頁 > 操作系統 > androidbitmap類

androidbitmap類

發布時間:2022-05-27 19:48:12

⑴ 怎麼給bitmap賦值 android

Bitmap是Android系統中的圖像處理的最重要的類之一。用它可以獲取圖像文件信息,對圖像進行旋轉,剪切,放大,縮小等操作。

Bitmap代表一張點陣圖,使我們在開發中常用的資源,下面就對Bitmap進行簡單的介紹。

Bitmap的獲取方法:

1、使用BitmapDrawable

BitmapDrawable里封裝的圖片就是一個Bitmap對象,我們要把Bitmap包裝成BitmapDrawable對象,可以調用BitmapDrawable的構造方法:

BItmapDrawbale drawable = new BItmapDrawable(bitmap);

如果要獲取BitmapDrawable所包裝的Bitmap對象,則可調用BitmapDrawable的getBitmap()方法:

Bitmap bitmap = drawbale.getBitmap();

2、Bitmap提供了一些靜態方法來創建Bitmap對象(僅列舉幾個):

createBitmap(Bitmap source,int x,int y,int width,int height):從原點陣圖source的指定坐標(x,y)開始,從中挖取寬width,高heigtht的一塊出來,創建新的Bitmap對象。

createScaledBitmap(Bitmap source,int width,ing height,boolean fliter):對源點陣圖進行縮放,縮放稱寬width,高heigth的新點陣圖。

createBitmap(int width,int height,Bitmap.Config config):創建一個寬width,高height的可變的新點陣圖。

createBitmap(Bitmap source, int x,int y,int width,int height ,Matrix m,boolean fliter):從源點陣圖source的指定坐標(x,y)開始,挖取寬width,高height的一塊來,創建新的Bitmap對象,並按照Matrix指定的規則進行變換。

3、通過對資源文件的解析獲取Bitmap對象

在這里就要用到BitmapFactory這個工具類,提供的方法如下:

decodeByteArray(byte[] data, int offset,int length):從指定位元組數組的offset位置開始,將長度為length的位元組數據解析成Bitmap對象。

decodeFIle(String pathName):從pathName指定的文件中解析、創建Bitmap對象。

decodeFileDescriptor(FileDescriptor fd):用於從FileDescriptor對應的文件中解析、創建Bitmap對象。

decodeResource(Resource res,int id):用於根據給定的資源ID從指定的資源文件中解析、創建Bitmap對象。

decodeStream(InputStream is):用於從指定輸入流中介解析、創建Bitmap對象。

但是,在系統不斷的解析、創建Bitmap的過程中,可能會由於內存小或其他原因,導致程序運行時發生OutOfMemory錯誤。

為此,Android為Bitmap提供了內存回收方法:

void recycle():強制回收Bitmap對象。

還有用於判斷Bitmap 對象是否被回收的方法:

boolean isRecycle();

如果Android應用需要訪問系統相冊,都需要藉助BitmapFactory解析、創建Bitmap對象。

4 從安卓無憂中看bitmap的幾種例子,下面是載入bitmap的例子,可以看裡面的源碼


如果您對答案滿意,請您關注一下名字中微博。

⑵ android中怎麼獲取一個bitmap在屏幕中位置

是要編寫一個這樣的功能么,android提供的api裡面一般圖片都是bitmap,可以通過canvas.drawbitmap的方法在view進行圖片的繪制,在方法中需要進行傳入一個類型為matrix的參數,設置martrix的一些參數就可以進行圖片的放大的繪制,這只是顯示,也就是mvc中的view層,然後通過提供的一些觸摸函數的重寫並實現自己需要的一些功能,如拖動,實際上就是改變bitmap繪制的位置。關於觸摸的處理和圖片的繪制可以在網上進行一些教程的搜索,我就不羅列了,最終就是需要通過控制函數來改變圖片的繪制方式,這也許就是你所需要的功能。

⑶ android bitmap使用時注意什麼

一、 問題的背景和意義
在Android移動應用開發中,對Bitmap的不小心處理,很容易引起程序內存空間耗盡而導致的程序崩潰問題。比如我們常遇到的問題:
java.lang.OutofMemoryError: bitmap size exceeds VM budget.
導致該問題的出現,一般由以下幾方面原因導致:
引動設備一般存儲空間非常有限。當然不同設備分配給應用的內存空間是不同的。但相對不但提高的設備解析度而言,內存的分配仍然是相對緊張的。
Bitmap對象常常佔用大量的內存空間,比如:對於2592*1936的設備,如果採用ARGB_8888的格式載入圖像,內存佔用將達到19MB空間。
在Anroid App中經常用到ListView,ViewPager等控制項,這些控制項常會包含較大數量的圖片資源。
二、 問題及場景分析
1 高效地載入大圖片。
BitmapFactory類提供了一些載入圖片的方法:decodeByteArray(), decodeFile(), decodeResource(), 等等。
為了避免佔用較大內存,經常使用BitmapFactory.Options 類,設置inJustDecodeBounds屬性為true。
//
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds =true;
BitmapFactory.decodeResource(getResources(), R.id.myimage, options);
為了避免java.lang.OutOfMemory 的異常,我們在真正decode圖片之前檢查它的尺寸,除非你確定這個數據源提供了准確無誤的圖片且不會導致佔用過多的內存。
載入一個按比例縮小的版本到內存中。例如,如果把一個原圖是1024*768 pixel的圖片顯示到ImageView為128*96 pixel的縮略圖就沒有必要把整張圖片都載入到內存中。為了告訴解碼器去載入一個較小的圖片到內存,需要在你的BitmapFactory.Options 中設置 inSampleSize 為true 。例如, 一個解析度為2048x1536 的圖片,如果設置inSampleSize 為4,那麼會產出一個大概為512x384的圖片。載入這張小的圖片僅僅使用大概0.75MB,如果是載入全圖那麼大概要花費12MB(假設bitmap的配置是ARGB_8888).
2 不要在主線程處理圖片。

眾所周知的問題,不再贅述。
注意兩點:1. 為了保證使用的資源能被回收,建議使用WeakReference, 以應用內存內存緊張時,回收部分資源,保證程序進程不被殺死。
2. 避免非同步任務的長時間耗時操作,在任務執行結束後,及時釋放資源。
3 管理Bitmap內存。
在Android開發中,載入一個圖片到界面很容易,但如果一次載入大量圖片就復雜多了。在很多情況下(比如:ListView,GridView或ViewPager),能夠滾動的組件需要載入的圖片幾乎是無限多的。
有些組件的child view在不顯示時會回收,並循環使用,如果沒有任何對bitmap的持久引用的話,垃圾回收器會釋放你載入的bitmap。這沒什麼問題,但當這些圖片再次顯示的時候,要想避免重復處理這些圖片,從而達到載入流暢的效果,就要使用內存緩存和本地緩存了,這些緩存可以讓你快速載入處理過的圖片。
3.1 內存緩存
內存緩存以犧牲內存的代價,帶來快速的圖片訪問。LruCache類(API Level 4之前可以使用Support Library)非常適合圖片緩存任務,在一個LinkedHashMap中保存著對Bitmap的強引用,當緩存數量超過容器容量時,刪除最近最少使用的成員(LRU)。
注意:在過去,非常流行用SoftReference或WeakReference來實現圖片的內存緩存,但現在不再推薦使用這個方法了。因為從Android 2.3 (API Level 9)之後,垃圾回收器會更積極的回收soft/weak的引用,這將導致使用soft/weak引用的緩存幾乎沒有緩存效果。順帶一提,在Android3.0(API Level 11)以前,bitmap是儲存在native 內存中的,所以系統以不可預見的方式來釋放bitmap,這可能會導致短時間超過內存限制從而造成崩潰。

⑷ android怎麼壓縮一個bitmap佔用空間大小

在Android應用里,最耗費內存的就是圖片資源。而且在Android系統中,讀取點陣圖Bitmap時,分給虛擬機中的圖片的堆棧大小隻有8M,如果超出了,就會出現OutOfMemory異常。所以,對於圖片的內存優化,是Android應用開發中比較重要的內容。 1) 要及時回收Bitmap的內存 Bitmap類有一個方法recycle(),從方法名可以看出意思是回收。這里就有疑問了,Android系統有自己的垃圾回收機制,可以不定期的回收掉不使用的內存空間,當然也包括Bitmap的空間。那為什麼還需要這個方法呢? Bitmap類的構造方法都是私有的,所以開發者不能直接new出一個Bitmap對象,只能通過BitmapFactory類的各種靜態方法來實例化一個Bitmap。仔細查看BitmapFactory的源代碼可以看到,生成Bitmap對象最終都是通過JNI調用方式實現的。所以,載入Bitmap到內存里以後,是包含兩部分內存區域的。簡單的說,一部分是Java部分的,一部分是C部分的。這個Bitmap對象是由Java部分分配的,不用的時候系統就會自動回收了,但是那個對應的C可用的內存區域,虛擬機是不能直接回收的,這個只能調用底層的功能釋放。所以需要調用recycle()方法來釋放C部分的內存。從Bitmap類的源代碼也可以看到,recycle()方法里也的確是調用了JNI方法了的。 那如果不調用recycle(),是否就一定存在內存泄露呢?也不是的。Android的每個應用都運行在獨立的進程里,有著獨立的內存,如果整個進程被應用本身或者系統殺死了,內存也就都被釋放掉了,當然也包括C部分的內存。 Android對於進程的管理是非常復雜的。簡單的說,Android系統的進程分為幾個級別,系統會在內存不足的情況下殺死一些低優先順序的進程,以提供給其它進程充足的內存空間。在實際項目開發過程中,有的開發者會在退出程序的時候使用Process.killProcess(Process.myPid())的方式將自己的進程殺死,但是有的應用僅僅會使用調用Activity.finish()方法的方式關閉掉所有的Activity。 經驗分享: Android手機的用戶,根據習慣不同,可能會有兩種方式退出整個應用程序:一種是按Home鍵直接退到桌面;另一種是從應用程序的退出按鈕或者按Back鍵退出程序。那麼從系統的角度來說,這兩種方式有什麼區別呢?按Home鍵,應用程序並沒有被關閉,而是成為了後台應用程序。按Back鍵,一般來說,應用程序關閉了,但是進程並沒有被殺死,而是成為了空進程(程序本身對退出做了特殊處理的不考慮在內)。 Android系統已經做了大量進程管理的工作,這些已經可以滿足用戶的需求。個人建議,應用程序在退出應用的時候不需要手動殺死自己所在的進程。對於應用程序本身的進程管理,交給Android系統來處理就可以了。應用程序需要做的,是盡量做好程序本身的內存管理工作。 一般來說,如果能夠獲得Bitmap對象的引用,就需要及時的調用Bitmap的recycle()方法來釋放Bitmap佔用的內存空間,而不要等Android系統來進行釋放。 下面是釋放Bitmap的示例代碼片段。 // 先判斷是否已經回收 if(bitmap != null && !bitmap.isRecycled()){ // 回收並且置為null bitmap.recycle(); bitmap = null; } System.gc(); 從上面的代碼可以看到,bitmap.recycle()方法用於回收該Bitmap所佔用的內存,接著將bitmap置空,最後使用System.gc()調用一下系統的垃圾回收器進行回收,可以通知垃圾回收器盡快進行回收。這里需要注意的是,調用System.gc()並不能保證立即開始進行回收過程,而只是為了加快回收的到來。 如何調用recycle()方法進行回收已經了解了,那什麼時候釋放Bitmap的內存比較合適呢?一般來說,如果代碼已經不再需要使用Bitmap對象了,就可以釋放了。釋放內存以後,就不能再使用該Bitmap對象了,如果再次使用,就會拋出異常。所以一定要保證不再使用的時候釋放。比如,如果是在某個Activity中使用Bitmap,就可以在Activity的onStop()或者onDestroy()方法中進行回收。 2) 捕獲異常 因為Bitmap是吃內存大戶,為了避免應用在分配Bitmap內存的時候出現OutOfMemory異常以後Crash掉,需要特別注意實例化Bitmap部分的代碼。通常,在實例化Bitmap的代碼中,一定要對OutOfMemory異常進行捕獲。 以下是代碼示例。 Bitmap bitmap = null; try { // 實例化Bitmap bitmap = BitmapFactory.decodeFile(path); } catch (OutOfMemoryError e) { // } if (bitmap == null) { // 如果實例化失敗 返回默認的Bitmap對象 return defaultBitmapMap; } 這里對初始化Bitmap對象過程中可能發生的OutOfMemory異常進行了捕獲。如果發生了OutOfMemory異常,應用不會崩潰,而是得到了一個默認的Bitmap圖。 經驗分享: 很多開發者會習慣性的在代碼中直接捕獲Exception。但是對於OutOfMemoryError來說,這樣做是捕獲不到的。因為OutOfMemoryError是一種Error,而不是Exception。在此僅僅做一下提醒,避免寫錯代碼而捕獲不到OutOfMemoryError。 3) 緩存通用的Bitmap對象 有時候,可能需要在一個Activity里多次用到同一張圖片。比如一個Activity會展示一些用戶的頭像列表,而如果用戶沒有設置頭像的話,則會顯示一個默認頭像,而這個頭像是位於應用程序本身的資源文件中的。 如果有類似上面的場景,就可以對同一Bitmap進行緩存。如果不進行緩存,盡管看到的是同一張圖片文件,但是使用BitmapFactory類的方法來實例化出來的Bitmap,是不同的Bitmap對象。緩存可以避免新建多個Bitmap對象,避免內存的浪費。 經驗分享: Web開發者對於緩存技術是很熟悉的。其實在Android應用開發過程中,也會經常使用緩存的技術。這里所說的緩存有兩個級別,一個是硬碟緩存,一個是內存緩存。比如說,在開發網路應用過程中,可以將一些從網路上獲取的數據保存到SD卡中,下次直接從SD卡讀取,而不從網路中讀取,從而節省網路流量。這種方式就是硬碟緩存。再比如,應用程序經常會使用同一對象,也可以放到內存中緩存起來,需要的時候直接從內存中讀取。這種方式就是內存緩存。 4) 壓縮圖片 如果圖片像素過大,使用BitmapFactory類的方法實例化Bitmap的過程中,需要大於8M的內存空間,就必定會發生OutOfMemory異常。這個時候該如何處理呢?如果有這種情況,則可以將圖片縮小,以減少載入圖片過程中的內存的使用,避免異常發生。 使用BitmapFactory.Options設置inSampleSize就可以縮小圖片。屬性值inSampleSize表示縮略圖大小為原始圖片大小的幾分之一。即如果這個值為2,則取出的縮略圖的寬和高都是原始圖片的1/2,圖片的大小就為原始大小的1/4。 如果知道圖片的像素過大,就可以對其進行縮小。那麼如何才知道圖片過大呢? 使用BitmapFactory.Options設置inJustDecodeBounds為true後,再使用decodeFile()等方法,並不會真正的分配空間,即解碼出來的Bitmap為null,但是可計算出原始圖片的寬度和高度,即options.outWidth和options.outHeight。通過這兩個值,就可以知道圖片是否過大了。 BitmapFactory.Options opts = new BitmapFactory.Options(); // 設置inJustDecodeBounds為true opts.inJustDecodeBounds = true; // 使用decodeFile方法得到圖片的寬和高 BitmapFactory.decodeFile(path, opts); // 列印出圖片的寬和高 Log.d("example", opts.outWidth + "," + opts.outHeight); 在實際項目中,可以利用上面的代碼,先獲取圖片真實的寬度和高度,然後判斷是否需要跑縮小。如果不需要縮小,設置inSampleSize的值為1。如果需要縮小,則動態計算並設置inSampleSize的值,對圖片進行縮小。需要注意的是,在下次使用BitmapFactory的decodeFile()等方法實例化Bitmap對象前,別忘記將opts.inJustDecodeBound設置回false。否則獲取的bitmap對象還是null。 經驗分享: 如果程序的圖片的來源都是程序包中的資源,或者是自己伺服器上的圖片,圖片的大小是開發者可以調整的,那麼一般來說,就只需要注意使用的圖片不要過大,並且注意代碼的質量,及時回收Bitmap對象,就能避免OutOfMemory異常的發生。 如果程序的圖片來自外界,這個時候就特別需要注意OutOfMemory的發生。一個是如果載入的圖片比較大,就需要先縮小;另一個是一定要捕獲異常,避免程序Crash。

⑸ Android中Bitmap和BitmapDrawable有什麼不同

Bitmap繼承Parcelable,是一個可以跨進程傳輸的對象,BitmapDrawable繼承Drawable,可Drawable只是一個抽象類,此類是一個存放數據流的載體。

1.使用情況:如果想綁定imageView之類的控制項,兩者都可以用,而想要將圖片數據轉換成其它對象,Bitmap功能更強大,而BitmapDrawable只是一個流的載體,所以一般獲取src資源文件的時候用得多,而想要把資源圖片截入到Bitmap需要轉換後才可得到Bitmap對象。
2.BitmapDrawable就是封裝了一個點陣圖。直接以文件的方式,就是封裝了一個原始的點陣圖。以Xml方式,可以對原始的點陣圖進行一系列的處理,比如說抗鋸齒,拉伸,對齊等等。
3.要了解BitmapDrawable的使用,還需要明白Bitmap、BitmapFactory等類。Bitmap代表了一個原始的點陣圖,並且可以對點陣圖進行一系列的變換操作。BitmapFactory提供一系列的方法用於產生一個Bitmap對象。多用在Canvas中。

⑹ android 怎麼判斷bitmap對象有沒有被使用

android 判斷bitmap對象有沒有被使用,可以通過bitmap的屬性isRecycled()方法判斷,如果已經被回收,說明沒有被使用,如下代碼:

//先判斷是否已經回收
if(bitmap!=null&&!bitmap.isRecycled()){
//回收並且置為null
bitmap.recycle();
bitmap=null;
}

Bitmap類的構造方法都是私有的,所以開發者不能直接new出一個Bitmap對象,只能通過BitmapFactory類的各種靜態方法來實例化一個Bitmap。仔細查看BitmapFactory的源代碼可以看到,生成Bitmap對象最終都是通過JNI調用方式實現的。所以,載入Bitmap到內存里以後,是包含兩部分內存區域的。簡單的說,一部分是Java部分的,一部分是C部分的。這個Bitmap對象是由Java部分分配的,不用的時候系統就會自動回收了,但是那個對應的C可用的內存區域,虛擬機是不能直接回收的,這個只能調用底層的功能釋放。所以需要調用recycle()方法來釋放C部分的內存。

⑺ android 怎麼將一個類中的arraylist<bitmap>序列化。

例如:public static void main(String[] args) throws IOException{
List<Date> list=new ArrayList<Date>();
Date now=new Date();
list.add(now);
list.add(new Date(now.getTime()+8888888));
ByteArrayOutputStream byteStream=new ByteArrayOutputStream();
ObjectOutput output=new ObjectOutputStream(byteStream);
output.writeObject(list);
byte b[]=byteStream.toByteArray();
BASE64Encoder base64Encoder=new BASE64Encoder();
String cookieString=base64Encoder.encode(b);
System.out.println("經過BASE64編碼的Cookie: "+cookieString);
System.out.println(" 開始解碼");
BASE64Decoder base64Decoder=new BASE64Decoder();
byte buf[]=base64Decoder.decodeBuffer(cookieString);
ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(buf);
ObjectInput input=new ObjectInputStream(byteArrayInputStream);
List<Date> afterList=(List<Date>) input.readObject();
for (Date date : afterList) {
System.out.println(date);
}
}

補充:Android是一種基於Linux的自由及開放源代碼的操作系統,主要使用於移動設備,如智能手機和平板電腦,由Google公司和開放手機聯盟領導及開發。尚未有統一中文名稱,中國大陸地區較多人使用「安卓」或「安致」。

⑻ android怎麼生成bitmap

1、

[java] view plain
public Bitmap convertViewToBitmap(View view){

Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
Bitmap.Config.ARGB_8888);
//利用bitmap生成畫布
Canvas canvas = new Canvas(bitmap);

//把view中的內容繪制在畫布上
view.draw(canvas);

return bitmap;
}

2、

[java] view plain
/**
* save view as a bitmap
*/
private Bitmap saveViewBitmap(View view) {
// get current view bitmap
view.setDrawingCacheEnabled(true);
view.buildDrawingCache(true);
Bitmap bitmap = view.getDrawingCache(true);

Bitmap bmp = plicateBitmap(bitmap);
if (bitmap != null && !bitmap.isRecycled()) { bitmap.recycle(); bitmap = null; }
// clear the cache
view.setDrawingCacheEnabled(false);
return bmp;
}

public static Bitmap plicateBitmap(Bitmap bmpSrc)
{
if (null == bmpSrc)
{ return null; }

int bmpSrcWidth = bmpSrc.getWidth();
int bmpSrcHeight = bmpSrc.getHeight();

Bitmap bmpDest = Bitmap.createBitmap(bmpSrcWidth, bmpSrcHeight, Config.ARGB_8888); if (null != bmpDest) { Canvas canvas = new Canvas(bmpDest); final Rect rect = new Rect(0, 0, bmpSrcWidth, bmpSrcHeight);

canvas.drawBitmap(bmpSrc, rect, rect, null); }

return bmpDest;
}

⑼ 求教java中有沒有類似android中的bitmap類


imageio
if(type == BufferedImage.TYPE_CUSTOM) {
ColorModel cm = source.getColorModel();
WritableRaster raster = cm.(CmsConfig.picWith, CmsConfig.picHeight);
boolean alphaPremultiplied = cm.isAlphaPremultiplied();
target = new BufferedImage(cm, raster, alphaPremultiplied, null);
} else {
target = new BufferedImage(CmsConfig.picWith, CmsConfig.picHeight, type);
Graphics2D g = target.createGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
g.dispose();
}
ImageIO.write(target, formatName, file);

⑽ android bitmap怎麼做緩存

Bitmap是Android系統中的圖像處理的最重要類之一。用它可以獲取圖像文件信息,進行圖像剪切、旋轉、縮放等操作,並可以指定格式保存圖像文件。

重要函數

public void recycle() // 回收點陣圖佔用的內存空間,把點陣圖標記為Dead

public final boolean isRecycled() //判斷點陣圖內存是否已釋放

public final int getWidth()//獲取點陣圖的寬度

public final int getHeight()//獲取點陣圖的高度

public final boolean isMutable()//圖片是否可修改

public int getScaledWidth(Canvas canvas)//獲取指定密度轉換後的圖像的寬度

public int getScaledHeight(Canvas canvas)//獲取指定密度轉換後的圖像的高度

public boolean compress(CompressFormat format, int quality, OutputStream stream)//按指定的圖片格式以及畫質,將圖片轉換為輸出流。

format:Bitmap.CompressFormat.PNG或Bitmap.CompressFormat.JPEG

quality:畫質,0-100.0表示最低畫質壓縮,100以最高畫質壓縮。對於PNG等無損格式的圖片,會忽略此項設置。

public static Bitmap createBitmap(Bitmap src) //以src為原圖生成不可變得新圖像

public static Bitmap createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter)//以src為原圖,創建新的圖像,指定新圖像的高寬以及是否可變。

public static Bitmap createBitmap(int width, int height, Config config)——創建指定格式、大小的點陣圖

public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height)以source為原圖,創建新的圖片,指定起始坐標以及新圖像的高寬。

BitmapFactory工廠類:
Option 參數類:

public boolean inJustDecodeBounds//如果設置為true,不獲取圖片,不分配內存,但會返回圖片的高度寬度信息。

public int inSampleSize//圖片縮放的倍數

public int outWidth//獲取圖片的寬度值

public int outHeight//獲取圖片的高度值

public int inDensity//用於點陣圖的像素壓縮比

public int inTargetDensity//用於目標點陣圖的像素壓縮比(要生成的點陣圖)

public byte[] inTempStorage //創建臨時文件,將圖片存儲

public boolean inScaled//設置為true時進行圖片壓縮,從inDensity到inTargetDensity

public boolean inDither //如果為true,解碼器嘗試抖動解碼

public Bitmap.Config inPreferredConfig //設置解碼器

public String outMimeType //設置解碼圖像

public boolean inPurgeable//當存儲Pixel的內存空間在系統內存不足時是否可以被回收

public boolean inInputShareable //inPurgeable為true情況下才生效,是否可以共享一個InputStream

public boolean inPreferQualityOverSpeed //為true則優先保證Bitmap質量其次是解碼速度

public boolean inMutable //配置Bitmap是否可以更改,比如:在Bitmap上隔幾個像素加一條線段

public int inScreenDensity //當前屏幕的像素密度
工廠方法:

public static Bitmap decodeFile(String pathName, Options opts) //從文件讀取圖片

public static Bitmap decodeFile(String pathName)

public static Bitmap decodeStream(InputStream is) //從輸入流讀取圖片

public static Bitmap decodeStream(InputStream is, Rect outPadding, Options opts)

public static Bitmap decodeResource(Resources res, int id) //從資源文件讀取圖片

public static Bitmap decodeResource(Resources res, int id, Options opts)

public static Bitmap decodeByteArray(byte[] data, int offset, int length) //從數組讀取圖片

public static Bitmap decodeByteArray(byte[] data, int offset, int length, Options opts)

public static Bitmap decodeFileDescriptor(FileDescriptor fd)//從文件讀取文件 與decodeFile不同的是這個直接調用JNI函數進行讀取 效率比較高

public static Bitmap decodeFileDescriptor(FileDescriptor fd, Rect outPadding, Options opts)
Bitmap.Config inPreferredConfig :

枚舉變數 (點陣圖位數越高代表其可以存儲的顏色信息越多,圖像越逼真,佔用內存越大)
public static final Bitmap.Config ALPHA_8 //代表8位Alpha點陣圖 每個像素佔用1byte內存
public static final Bitmap.Config ARGB_4444 //代表16位ARGB點陣圖 每個像素佔用2byte內存
public static final Bitmap.Config ARGB_8888 //代表32位ARGB點陣圖 每個像素佔用4byte內存
public static final Bitmap.Config RGB_565 //代表8位RGB點陣圖 每個像素佔用2byte內存
Android中一張圖片(BitMap)佔用的內存主要和以下幾個因數有關:圖片長度,圖片寬度,單位像素佔用的位元組數。一張圖片(BitMap)佔用的內存=圖片長度*圖片寬度*單位像素佔用的位元組數

閱讀全文

與androidbitmap類相關的資料

熱點內容
自己購買雲主伺服器推薦 瀏覽:422
個人所得稅java 瀏覽:761
多餘的伺服器滑道還有什麼用 瀏覽:192
pdf劈開合並 瀏覽:28
不能修改的pdf 瀏覽:752
同城公眾源碼 瀏覽:489
一個伺服器2個埠怎麼映射 瀏覽:298
java字元串ascii碼 瀏覽:79
台灣雲伺服器怎麼租伺服器 瀏覽:475
旅遊手機網站源碼 瀏覽:332
android關聯表 瀏覽:946
安卓導航無聲音怎麼維修 瀏覽:333
app怎麼裝視頻 瀏覽:431
安卓系統下的軟體怎麼移到桌面 瀏覽:96
windows拷貝到linux 瀏覽:772
mdr軟體解壓和別人不一樣 瀏覽:904
單片機串列通信有什麼好處 瀏覽:340
游戲開發程序員書籍 瀏覽:860
pdf中圖片修改 瀏覽:288
匯編編譯後 瀏覽:491