2013-04-10 108 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); 

会返回一个对象绘制

相关问题