1. 程式人生 > >設定ImageView的圖片資源是直接來自SD卡

設定ImageView的圖片資源是直接來自SD卡

在設定ImageView資源的時候,這時的圖片是來自SD卡,檢視API很容易就會看到view.setImageUri(Uri u)這個函式。所以一般會這樣寫:

ImageView view = (ImageView)findViewById(...);
File file = new File(path);
Uri uri = Uri.from(file);
view.setImageUri(uri);
但是這樣做是不行的,因為setImageUri這個函式使不能讀取SD卡中的檔案的,只能讀取手機本身的檔案。
所以改用以下這種方式:
Bitmap bit = BitmapFactory.decodeFile("/sdcard/image/test.jpg"); //自定義//路徑
iv.setImageBitmap(bit); 

用這種方式的時候,如果圖片太大,很可能會出現這樣的bug:
Java.lang.OutOfMemoryError : bitmap size exceeds VM budget

解決方法是:
FileInputStream f = new FileInputStream(path);
Bitmap bm = null;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;//圖片的長寬都是原來的1/8
BufferedInputStream bis = new BufferedInputStream(f);
bm = BitmapFactory.decodeStream(bis, null, options);
view.setImageBitmap(bm);