當前位置:首頁 » 安卓系統 » android顯示bitmap

android顯示bitmap

發布時間: 2023-03-19 19:05:11

① Android 圖片載入(一)高效載入Bitmap 基礎篇

由於Bitmap的特殊性以及Android對單個應用所規定的最大內存限制,我們在同時載入大量Bitmap時很容易發生內存溢出,即我們通常所說的OutOfMemoryError(OOM),因此高效載入Bitmap就成為了每個Android開發者的必備技能。

在學習如何高效地載入Bitmap之前,首先介紹一下如何載入一個Bitmap。我們都知道,Bitmap在Android中通常指的是一張圖片,那麼如何將JPG、PNG等格式的圖片轉換成Bitmap對象呢?BitmapFactory類給我們提供了一些方法:

接下來開始介紹如何高效地載入Bitmap,其實核心思想很簡單: 就是採用BitmapFactory.Options參數來調整圖片尺寸來適配控制項的大小。

假如我們顯示圖片的控制項ImageView寬高為100×100像素,而圖片的尺寸為1024×1024像素,這個時候如果將整個圖片載入進來並顯示到控制項上,自然是很佔用內存資源的。這個時候可以通過BitmapFactory.Options按一定的采樣率載入縮小後的圖片,再將縮小後的圖片顯示到ImageView中,這樣就能減小內存佔用從而在一定程度上避免OOM的發生。

通過BitmapFactory.Options來縮放圖片,主要是使用它的inSampleSize參數,也就是前面提到的采樣率。當采樣率inSampleSize為1時,采樣後的圖片大小為原圖大小;當采樣率inSampleSize>1,比如為2時,采樣後的圖片寬高都為原圖的1/2,即像素降為原圖的1/4,佔用的內存大小也就是原圖的1/4;比較特殊的是,當采樣率inSampleSize<1時,系統會自動將該值當做1來處理。 因此可以得出一個結論:采樣率inSampleSize必須是大於1的整數圖片才會有縮小的效果,並且采樣率同時作用於寬高,也就是說采樣後的圖片會縮小到原圖的1/(inSampleSize^2)。比如inSampleSize=4,那麼縮放比例為1/16。

我們現在知道了,通過采樣率可以提高圖片的載入效率,那麼如何才能計算出最合適的采樣率?我們可以按照如下流程:

接下來以decodeFile方法為例實現圖片的縮放,其他三個方法處理方式類似。

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

《Android開發藝術探索》

② android 讀取Bitmap的幾種方式

想讀取本地項目里的資源圖片,但又不能用到R文件。查了很多資料終於找到了。 現總結以下幾種讀取Bitmap的方法。 1.以文件流的方式,假設在sdcard下有 test.png圖片 FileInputStream fis = new FileInputStream("/sdcard/test.png"); Bitmap bitmap=BitmapFactory.decodeStream(fis); 2. 以R文件的方式,假設 res/drawable下有 test.jpg文件Bitmapbitmap =BitmapFactory.decodeResource(this.getContext().getResources(), R.drawable.test); 3.以ResourceStream的方式,但不用到R文件。 Bitmap.bitmap=BitmapFactory.decodeStream(getClass().getResourceAsStream(「/res/drawable/test.png」)); 圖片名就可以讀取到 Bitmap啦。 BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 2; //圖片寬高都為原來的二分之一,即圖片為原來的四分一 //以上代碼可以優化內存溢出,但它只是改變圖片大小,並不能徹底解決內存溢出。

③ Android開發中ImageView里的Bitmap很模糊,怎麼解決

目標和容器不一致導致的。
1、設置imageview的scaleType為center,即不隨著控制項的大小而去硬性適配;
2、確保所得bitmap即圖片有預期的大小;
3、設置imageview的寬高為wrap,去適應bitmap的大小。

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

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

熱點內容
c語言中a10什麼意思 發布:2024-04-27 10:45:43 瀏覽:57
物聯網中ftp是什麼意思 發布:2024-04-27 10:41:17 瀏覽:985
銀行密碼保護在哪裡 發布:2024-04-27 10:25:23 瀏覽:188
tomcat源碼導入eclipse 發布:2024-04-27 10:25:15 瀏覽:193
android的api 發布:2024-04-27 10:23:39 瀏覽:682
官式訪問 發布:2024-04-27 10:04:00 瀏覽:521
國產高配置有哪些 發布:2024-04-27 09:18:26 瀏覽:947
建行手機app忘記密碼如何修改 發布:2024-04-27 08:58:59 瀏覽:393
蟻群演算法的數學模型 發布:2024-04-27 08:58:39 瀏覽:994
androidactivity生命 發布:2024-04-27 07:33:48 瀏覽:84