我需要從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. 從Android上的外部存儲加載時發生圖像大小問題
- 2. Android:無法從內部存儲器加載圖像到webview
- 3. Android從內部/外部存儲器選擇圖像
- 4. 從外部存儲器加載位圖時發生OutOfMemory異常
- 5. Android外部存儲加密
- 6. 存儲大量圖像android
- 7. 從AS2到AS3加載外部圖像
- 8. Phonegap圖像不從外部http加載
- 9. c#從外部DLL加載圖像
- 10. 如何從外部存儲平滑地載入圖像?
- 11. SSL加載外部圖像
- 12. Android - 從外部存儲器中讀取大文件
- 13. 從外部存儲中讀取圖像/文件Android
- 14. 從Android的外部存儲獲取最新的圖像
- 15. android -universal圖像加載器無法從緩存加載
- 16. 從存儲的png中加載圖像
- 17. 從外部存儲器加載文件到Inputstream
- 18. Android外部存儲
- 19. 如何從外部存儲器獲取圖像
- 20. 保存到外部存儲器android
- 21. 在加載外部圖像之前檢查瀏覽器緩存
- 22. android-在內部存儲器中存儲圖像
- 23. Android,如何將圖像存儲在內部存儲器中?
- 24. 在android內部存儲器中存儲圖像
- 25. android內部存儲器加載標籤圖標
- 26. 權限被拒絕以便從Android內部存儲加載圖像
- 27. C++從存儲器加載位圖 - 存儲器泄漏
- 28. 無法從Android的內部存儲器中獲取圖像?
- 29. 從Android的內部存儲器讀取圖像
- 30. 從外部域(AWS S3)加載圖像並將其存儲在瀏覽器內存中
非常感謝的答案。你是絕對正確的,但由於要求,我應該一次加載所有圖像。 – Maria 2011-04-08 12:08:48