2013-04-10 60 views
4

我試圖從外部存儲裝載圖像。我設置了權限,我嘗試了不同的方式,但都不起作用。從外部存儲中讀取圖像/文件Android

BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inPreferredConfig = Bitmap.Config.ARGB_8888; 

    Bitmap bitmap = BitmapFactory.decodeFile(file.toString()); 

    tv.setImageBitmap(bitmap); 

而這其中,

FileInputStream streamIn = new FileInputStream(file); 
Bitmap bitmap = BitmapFactory.decodeStream(streamIn); 

    tv.setImageBitmap(bitmap); 
     streamIn.close(); 
+1

什麼是你的錯誤? – Zyerah 2013-04-10 06:17:01

+0

上述代碼中的電視是什麼。它是一個文本視圖? – Raghunandan 2013-04-10 06:32:11

+0

我沒有收到任何錯誤,因爲我嘗試了一下,但是如果沒有它,應用程序就會崩潰。 ImageView tv =(ImageView)findViewById(R.id.imageView1); – 2013-04-10 06:41:35

回答

17

如果我有文件abc.jpgsdcard然後

String photoPath = Environment.getExternalStorageDirectory()+"/abc.jpg"; 

,並得到bitmap

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
Bitmap bitmap = BitmapFactory.decodeFile(photoPath, options); 

Bitmap bitmap1 = BitmapFactory.decodeFile(photoPath); 

到avoide內存不足的錯誤的我會saggest你做下面的代碼...

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 8; 
final Bitmap b = BitmapFactory.decodeFile(photoPath, options); 

,以避免上述問題,您可以使用畢加索(一個強大的圖像下載和Android的高速緩存庫)

Documentation

如何?

Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2); 
Picasso.with(context).load(new File(...)).into(imageView3); 
+0

我得到它的工作,我想我的方式很好,問題是我試圖運行它作爲一個函數,然後調用一個函數,它的工作原理,如果我不使用函數。我不確定爲什麼當我使用函數時它不起作用。你會在哪裏定義這個功能,你可以在哪裏調用它? – 2013-04-10 07:14:56

+0

這幫助我.. :)謝謝 – ADT 2014-07-11 07:23:51

+0

如果我使用這個「選項。inSampleSize = 8; 「圖像變得非常小,清晰度也在下降。 – 2015-07-07 07:13:26

3
File sdCard = Environment.getExternalStorageDirectory(); 

File directory = new File (sdCard.getAbsolutePath() + "/Pictures"); 

File file = new File(directory, "image_name.jpg"); //or any other format supported 

FileInputStream streamIn = new FileInputStream(file); 

Bitmap bitmap = BitmapFactory.decodeStream(streamIn); //This gets the image 

streamIn.close(); 
0

從您的文件夾中獲得下面的圖片的路徑。然後將該文件解碼爲位圖。

File file= new File(android.os.Environment.getExternalStorageDirectory(),"Your folder"); 
    Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()) 
0

如果你有一個文件路徑,只要使用BitmapFactory直接,但告訴它使用的是保留阿爾法格式:

BitmapFactory.Options options = new BitmapFactory.Options(); 

options.inPreferredConfig = Bitmap.Config.ARGB_8888; 

Bitmap bitmap = BitmapFactory.decodeFile(photoPath, options); 
selected_photo.setImageBitmap(bitmap); 
0

有一個叫

createFromPath(String) 

功能Drawable類。 所以聲明

String path="/storage/..<just type in the path>"; 
Drawable.createFromPath(path); 

會返回一個對象繪製

相關問題