我需要從SD卡加載大量大圖像(500個.png文件)到我的應用程序。我是否總是必須將圖像轉換爲位圖並創建位圖文件?我不想調整堆大小。 是否有另一種方式從SD卡讀取圖像?Android從外部存儲器加載大圖像
0
A
回答
0
應用程序中圖像的內部表示是位和字節的集合 - 不是任何特定格式(png,bmp等)的圖像。
當圖像由BitmapFactory加載時,圖像被轉換爲此內部表示。
它通常是不加載在一旦所有的位圖是一個好主意,你會很快耗盡內存...
1
如果你在一個視圖中顯示它們,那麼你必須將其裝入內存完整。
你沒有提到你的圖片會有多大,但是我們在我們的照片庫中做的是保留這些位圖的SoftReference
s列表,以便垃圾收集器可以在它們不可見的(即當顯示它們的視圖被丟棄時 - 確保實際發生這種情況,例如通過使用AdapterView
)。結合這些與這些位圖的延遲加載,你應該很好。
0
如果圖片的尺寸非常大,您必須在加載到ImageView之前調整它們的大小。否則,即使一張圖片也容易引起內存不足問題。我不知道你想同時顯示多少張圖片,以及它們有多大。但我建議你在顯示它們之前調整它們的大小。
要調整圖像,並顯示它,您可以使用此代碼:
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
bitmapOptions.inJustDecodeBounds = true;
BitmapFactory.decodeStream(fileInputStream, null, bitmapOptions);
//reduce the image size
int imageWidth = bitmapOptions.outWidth;
int imageHeight = bitmapOptions.outHeight;
int scale = 1;
while (imageWidth/scale >= screenWidth && imageHeight/scale >= screenHeight) {
imageWidth = imageWidth/2;
imageHeight = imageHeight/2;
scale = scale * 2;
}
//decode the image with necessary size
fileInputStream = new FileInputStream(cacheFile);
bitmapOptions.inSampleSize = scale;
bitmapOptions.inJustDecodeBounds = false;
imageBitmap = BitmapFactory.decodeStream(fileInputStream, null, bitmapOptions);
ImageView imageView = (ImageView)this.findViewById(R.id.preview);
imageView.setImageBitmap(imageBitmap);
在我的Android項目,我用這一段代碼來調整我的高清壁紙進行審查。
相關問題
- 1. UIL:從外部存儲負載圖像
- 2. 從Android上的外部存儲加載時發生圖像大小問題
- 3. Android:無法從內部存儲器加載圖像到webview
- 4. Android從內部/外部存儲器選擇圖像
- 5. 從外部存儲器加載位圖時發生OutOfMemory異常
- 6. 無法從內部存儲器加載ImageView中的圖像
- 7. ListView從內部存儲器加載圖像時滾動緩慢
- 8. Android從內部/外部存儲獲取圖像
- 9. Android外部存儲加密
- 10. 外部存儲器android
- 11. 下載圖像到內部存儲器
- 12. Laravel:加載存儲在「公共」文件夾外部的圖像
- 13. 存儲大量圖像android
- 14. Android存儲大量圖像
- 15. c#從外部DLL加載圖像
- 16. Phonegap圖像不從外部http加載
- 17. 從AS2到AS3加載外部圖像
- 18. 如何從外部存儲平滑地載入圖像?
- 19. SSL加載外部圖像
- 20. Android - 從外部存儲器中讀取大文件
- 21. 從Android的外部存儲獲取最新的圖像
- 22. 從外部存儲中讀取圖像/文件Android
- 23. 從谷歌雲加載圖像存儲
- 24. 從存儲的png中加載圖像
- 25. android -universal圖像加載器無法從緩存加載
- 26. AndEngine從外部存儲或位圖源加載TiledTextureRegion
- 27. 從外部存儲器加載文件到Inputstream
- 28. Android外部存儲
- 29. 如何從外部存儲器獲取圖像
- 30. 保存到外部存儲器android
非常感謝的答案。你是絕對正確的,但由於要求,我應該一次加載所有圖像。 – Maria 2011-04-08 12:08:48