Sean's Note: 讀取外部記憶體的圖片並秀在 ImageView 上

2013年3月25日 星期一

讀取外部記憶體的圖片並秀在 ImageView 上

Step 1: 宣告外部記憶體 URI 位置
Uri uriMedia = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

Step 2: Query URI 的資料,利用 c.moveToNext() 取得繞行所有圖片的資料。
Cursor c = managedQuery(uriMedia, null, null, null, null);

Step 3: 取得 _id 後,建立該圖片完整的 URI。
uriSource = Uri.withAppendedPath(uirMedia, c.getString(0));

取得完整的 URI 後,有兩種方法可以秀出圖片:

Step 4.1: 利用 URI 的 stream data 建立 Bitmap 物件。
ContentResolver resolver = getContentResolver();
resolver.openInputStream(uriSource)
imageView.setImageBitmap(bitmap); 

Step 4.2: 直接將 URI 當參數設給 imageView
imageView.setImageURI(uriSource);

在這邊要注意的是,Android 單一程式的記憶體空間只能使用到 16~128MB,所以當

圖片太大不管是 setImageBitmap 或 setImageURI,都有可能造成 Out of Memory 的

錯誤訊息。解決方法可見 Loading Large Bitmaps Efficiently

Runtime.getRuntime().totalMemory() 可以查看應用程式目前的記憶體(Heap Size)大小,

Heap Size 是動態增長的。

Runtime.getRuntime().maxMemory() 可以查看應用程式的記憶體(Heap Size)能增長到多大。

沒有留言:

張貼留言