ImageView設置成手機內存卡圖片

在設置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); 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章