導航:首頁 > 操作系統 > androidinbitmap

androidinbitmap

發布時間:2024-05-20 03:19:27

Ⅰ 怎麼給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 虛擬機有自動回收機制。

Ⅲ Android幀動畫/AnimationDrawable導致的OOM/ANR的解決方案

如果有播放超多幀動畫的需求,直接點擊 FrameAnimation 在github查看,基本能滿足你的所有需求,就不用往下看了,基本能滿足 99.99% 人的需求。

       當在應用中需要使用幀動畫的時候,最先想到的就是Android提供的AnimationDrawable了,但是如果幀動畫中如果包含上百幀圖片,此時再用AnimationDrawable就不是那麼理想了。AnimationDrawable使用一個Drawable數組來存儲每一幀的圖像,會直接把全部圖片載入進內存。隨著幀數量的增多,就算性能再強勁的機器也會卡頓、OOM。

    最近的項目中需要用到大量的幀動畫(各種閃瞎24K鈦合金狗眼的禮物效果,多的高達200幀),既然AnimationDrawable不行,就想到了兩種解決方法。

   因為是直播的項目,包含人臉貼圖等都是用opengl繪制的,如果用OpenGL繪制一層Texture直接推流還省事。只在主播端處理就行了,但是IOS那邊都弄得差不多了,直接原生的不用處理也不會有什麼異常什麼的。。很尷尬。

    好吧,第一個不行那就想到Android自帶的surfaceView啦。我首先用不同的手機測試了下應用從本地decode一個bitmap的時間(png格式,414*736,大小在30-100k之間),因為幀動畫的每幀不會太大,在性能好點的設備上基本保持在10-30ms之間(不推流基本上推流狀態下10ms左右,推流狀態下20左右),在性能稍差的設備中基本上也不會超過50ms,所以說是沒什麼大問題的。

既然不能完全載入到內存,想到的就是類似視頻播放或者視頻直播類似的思路。首先定義一個Bitmap的緩沖區,邊繪制邊載入。首先載入一定數量的幀到Bitmap緩沖區,載入完成後通知SurfaceView開始繪制。SurfaceView繪制一幀完成後通知Bitmap緩沖區載入下一幀,同時將繪制過的一幀的從Bitmap緩沖區移除。一幀繪制完成後,繪制線程根據設置的幀間隔休眠一段時間,休眠完成後開始從Bitmap緩沖區獲取下一幀,依此類推,一直循環,直到播放完成或者手動停止。按照這種方式實現起來,發現oom卡頓什麼的果然不存在了,內存的使用情況如圖。

但是看著這個垃圾桶一個挨一個,這個內存回收情況完全不正常!GC太頻繁了。想著應該是這里出現了問題。[圖片上傳失敗...(image-96f387-1512626035688)]
頻繁的添加移除bitmap,導致了不算太嚴重的內存抖動。之所以稱之為不算太嚴重,因為大概400ms一次,一次gc花費2ms左右。不看內存,只看運行效果。真的感覺不出來。但是呢,這樣顯然也是不行滴。

最常見的解決方法就是對象的復用,創建各種pool。Android也提供了Bitmap的復用方式,在載入bitmap的時候傳入一個inBitmap,那麼載入的bitmap就會復用原bitmap的內存空間,所以理論上將要復用的bitmap和新載入的bitmap在顏色深度一樣的情況下,復用的bitmap寬高要大於新載入的bitmap。50L的桶畢竟最多隻能裝50L的水。關於inBitmap更多資料可以參考 這里 , 還有這里 。(請自備梯子)。 使用起來很簡單,大概就是這樣

然後實現思路就是在這里修改了,把將要刪除的哪一幀留下來作為inBitmap。

Ⅳ 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。

Ⅵ bitmap璁劇疆鍥劇墖澶у皬-Android鍐呭瓨浼樺寲浜旓細Bitmap浼樺寲

C#wpfBitmapImage浠庢湰鍦拌祫婧愯幏寰楁湭鐭ュ儚緔犲ぇ灝忕殑鍥劇墖錛屽備綍灝嗗叾瀵硅薄璁句負鎸囧畾澶у皬

涓鑸鏉ヨ翠竴涓鐐硅綺劇『鐨勮ゅ畾涓1/72鑻卞,鍦╓PF涓,閲囩敤鐨勮懼囨棤鍏沖崟浣嶅嵆1/96鑻卞

鎵浠ョ▼搴忎腑鑾峰彇鐨勫浘鐗囧ぇ灝忔瘮鐪熷疄鍥劇墖鐨勫ぇ灝忚佸ぇ涓鐐,鑾峰彇鍒板浘鐗囧ぇ灝忓悗榪涜岀浉搴旂殑杞鎹㈠嵆鍙鑾峰緱鍥劇墖鍘熸潵鐨勫昂瀵稿:height=height*72/96

bmp鍏ㄥ睆鎴鍥懼ぇ灝

800*480銆傚湪浠繪剰浣嶇疆鏄劇ず浠繪剰澶у皬bmp鍥劇墖澶存枃浠,鏅閫氬叏灞800*480鏄劇ずbmp,瀹規槗鍒嗘瀽銆侭MP(鍏ㄧОBitmap)鏄疻indows鎿嶄綔緋葷粺涓鐨勬爣鍑嗗浘鍍忔枃浠舵牸寮,鍙浠ュ垎鎴愪袱綾:璁懼囨湁鍚戦噺鐩稿叧浣嶅浘(DDB)鍜岃懼囨棤鍚戦噺鐩稿叧浣嶅浘(DIB),浣跨敤闈炲父騫褲

Android鍐呭瓨浼樺寲浜旓細Bitmap浼樺寲

Android鍐呭瓨浼樺寲涓:java鍨冨溇鍥炴敹鏈哄埗

Android鍐呭瓨浼樺寲浜:鍐呭瓨娉勬紡

Android鍐呭瓨浼樺寲涓:鍐呭瓨娉勬紡媯嫻嬩笌鐩戞帶

Android鍐呭瓨浼樺寲鍥:OOM

Android鍐呭瓨浼樺寲浜:Bitmap浼樺寲

鍘嬬緝姣:scale=(flaot)targetDensity/density

targetDensity:璁懼囧睆騫曞儚緔犲瘑搴dpi

density:鍥劇墖瀵瑰簲鐨勬枃浠跺す鐨勫儚緔犲瘑搴dpi

1)銆佸悓涓寮犲浘鐗囨斁鍦ㄤ笉鍚岀殑璧勬簮鐩褰曚笅,鍏跺垎杈ㄧ巼浼氭湁鍙樺寲銆

2)銆丅itmap鐨勫垎杈ㄧ巼瓚婇珮,鍏惰В鏋愬悗鐨勫介珮瓚婂皬,鐢氳嚦灝忎簬鍘熸湁鐨勫浘鐗(鍙婄緝鏀),浠庤屽唴瀛樹篃鍝嶅簲鐨勫噺灝戙

3)銆佸浘鐗囦笉鏀劇疆浠諱綍璧勬簮鐩褰曟椂,鍏朵嬌鐢ㄩ粯璁ゅ垎杈ㄧ巼mdpi:160銆

4)銆佽祫婧愮洰褰曞垎杈ㄧ巼鍜屽睆騫曞垎杈ㄧ巼涓鑷存椂,鍥劇墖灝哄鎬笉浼氱緝鏀俱

Bitmap鏀懼湪璧勬簮鐩褰曚腑鐨勮$畻鏂瑰紡涓:

涓昏侀氳繃緙栫爜銆侀噰鏍楓佸嶇敤銆佸尶鍚嶅叡浜鍖鴻繘琛屼紭鍖

鐢變簬ARGB_4444鐨勭敾璐ㄦ儴涓嶅繊鐫,涓鑸鍋囧傚瑰浘鐗囨病鏈夐忔槑搴﹁佹眰鐨勮瘽,鍙浠ユ敼鎴怰GB_565,鐩告瘮ARGB_8888灝嗚妭鐪佷竴鍗婄殑鍐呭瓨寮閿

鍏朵腑,A浠h〃閫忔槑搴;R浠h〃綰㈣壊;G浠h〃緇胯壊;B浠h〃钃濊壊銆

ALPHA_8琛ㄧず8浣岮lpha浣嶅浘,鍗矨=8,涓涓鍍忕礌鐐瑰崰鐢1涓瀛楄妭,瀹冩病鏈夐滆壊,鍙鏈夐忔槑搴︺

ARGB_4444琛ㄧず16浣岮RGB浣嶅浘,鍗矨=4,R=4,G=4,B=4,涓涓鍍忕礌鐐瑰崰4+4+4+4=16浣,2涓瀛楄妭銆

ARGB_8888琛ㄧず32浣岮RGB浣嶅浘,鍗矨=8,R=8,G=8,B=8,涓涓鍍忕礌鐐瑰崰8+8+8+8=32浣,4涓瀛楄妭銆

RGB_565琛ㄧず16浣峈GB浣嶅浘,鍗砇=5,G=6,B=5,瀹冩病鏈夐忔槑搴,涓涓鍍忕礌鐐瑰崰5+6+5=16浣,2涓瀛楄妭銆

bitmap鐨勫崰鐢ㄥ唴瀛,鏄浠bitmap鐨勫介珮鍜屾瘡涓鍍忕礌鍗犵敤鐨勫瓧鑺傛暟鍐沖畾鐨勩

鏍規嵁BitmapFactory鐨勯噰鏍風巼榪涜屽帇緙╄劇疆閲囨牱鐜,涓嶈兘灝忎簬1鍋囧傛槸2鍒欏戒負涔嬪墠鐨1/2,楂樹負涔嬪墠鐨1/2,涓鍏辯緝灝1/4浠ユょ被鎺

鍥劇墖澶嶇敤鎸囩殑鏄痠nBitmap榪欎釜灞炴с

涓嶄嬌鐢ㄨ繖涓灞炴,浣犲姞杞戒笁寮犲浘鐗,緋葷粺浼氱粰浣犲垎閰嶄笁浠藉唴瀛樼┖闂,鐢ㄤ簬鍒嗗埆鍌ㄥ瓨榪欎笁寮犲浘鐗

濡傛灉鐢ㄤ簡inBitmap榪欎釜灞炴,鍔犺澆涓夊紶鍥劇墖,榪欎笁寮犲浘鐗囦細鎸囧悜鍚屼竴鍧楀唴瀛,鑰屼笉鐢ㄥ紑杈熶笁鍧楀唴瀛樼┖闂淬

inBitmap鐨勯檺鍒:

1銆3.0-4.3

澶嶇敤鐨勫浘鐗囧ぇ灝忓繀欏葷浉鍚

緙栫爜蹇呴』鐩稿悓

2銆4.4浠ヤ笂

澶嶇敤鐨勭┖闂村ぇ浜庣瓑浜庡嵆鍙

緙栫爜涓嶅繀鐩稿悓

3銆佷笉鏀鎸乄ebP

4銆佸浘鐗囧嶇敤,榪欎釜灞炴у繀欏昏劇疆涓簍rue;

=true;

Android緋葷粺涓轟簡榪涚▼闂村叡浜鏁版嵁寮杈熺殑涓鍧楀唴瀛樺尯鍩,鐢變簬榪欏潡鍖哄煙涓嶅彈搴旂敤鐨凥ead鐨勫ぇ灝忛檺鍒,鐩稿綋浜庡彲浠ョ粫寮oom,FaceBook鐨凢resco棣栨″簲鐢ㄥ埌瀹為檯涓銆

闄愬埗:5.0浠ュ悗灝遍檺鍒朵簡鍖垮悕鍏變韓鍐呭瓨鐨勪嬌鐢ㄣ

鍦⊿DK11->18涔嬮棿,閲嶇敤鐨刡itmap澶у皬蹇呴』鏄涓鑷寸殑,渚嬪傜粰inBitmap璧嬪肩殑鍥劇墖澶у皬涓100-100,閭d箞鏂扮敵璇風殑bitmap蹇呴』涔熶負100-100鎵嶈兘澶熻閲嶇敤銆備粠SDK19寮濮,鏂扮敵璇風殑bitmap澶у皬蹇呴』灝忎簬鎴栬呯瓑浜庡凡緇忚祴鍊艱繃鐨刡itmap澶у皬銆傛柊鐢寵風殑bitmap涓庢棫鐨刡itmap蹇呴』鏈夌浉鍚岀殑瑙g爜鏍煎紡,渚嬪傚ぇ瀹墮兘鏄8888鐨,濡傛灉鍓嶉潰鐨刡itmap鏄8888,閭d箞灝變笉鑳芥敮鎸4444涓565鏍煎紡鐨刡itmap浜嗐傛垜浠鍙浠ュ壋寤轟竴涓鍖呭惈澶氱嶅吀鍨嬪彲閲嶇敤bitmap鐨勫硅薄奼,榪欐牱鍚庣畫鐨刡itmap鍒涘緩閮借兘澶熸壘鍒板悎閫傜殑鈥滄ā鏉庫濆幓榪涜岄噸鐢ㄣ

8.0Bitmap鐨勫儚緔犳暟鎹瀛樺偍鍦∟ative,涓轟粈涔堝張鏀逛負Native瀛樺偍鍛?

鍥犱負8.0鍏變韓浜嗘暣涓緋葷粺鐨勫唴瀛,嫻嬭瘯8.0鎵嬫満濡傛灉涓鐩村壋寤築itmap,濡傛灉鎵嬫満鍐呭瓨鏈1G,閭d箞浣犵殑搴旂敤鍔犺澆1G涔熶笉浼歰om銆

鍙浠ュ埄鐢↙RU寮綆$悊Bitmap,緇欎粬璁劇疆鍐呭瓨鏈澶у,鍙婃椂鍥炴敹銆

BitmapRegionDecoder

閱讀全文

與androidinbitmap相關的資料

熱點內容
cs管理員命令是什麼 瀏覽:122
華為v10模擬加密門禁卡 瀏覽:723
android修改app名稱 瀏覽:640
輻射3夥伴命令 瀏覽:247
蘋果電腦pdf轉換成word 瀏覽:921
純小數運演算法則 瀏覽:385
php什麼是事務 瀏覽:859
怎麼添加網名文件夾 瀏覽:769
啊哈演算法語言 瀏覽:677
馬來西亞加密貨幣政策 瀏覽:233
交通銀行app鎖定怎麼解鎖 瀏覽:54
php登錄驗證session 瀏覽:730
粵政易文件放在手機哪個文件夾 瀏覽:107
列印機和傳真命令 瀏覽:550
php添加購物車 瀏覽:5
安卓怎麼下載植物大戰僵屍1無盡版 瀏覽:267
程序員上班下班難嗎 瀏覽:299
夢的pdf微盤 瀏覽:186
材料結構分析pdf 瀏覽:795
程序員預研的項目 瀏覽:346