从外部存储Android中读取图像/文件

时间:2013-04-10 06:16:27

标签: java android image file-io bitmap

我正在尝试从外部存储加载图像。我设置权限,我尝试了不同的方式,但没有一个工作。

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();

5 个答案:

答案 0 :(得分:22)

如果我在abc.jpg上有文件sdcard,那么:

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);

以避免内存不足错误我建议您使用以下代码...

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

为避免上述问题,您可以使用 Picasso (适用于Android的强大图片下载和缓存库)

Documentation

如何?

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

答案 1 :(得分:4)

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();

答案 2 :(得分:0)

从您的文件夹中获取图像的路径,如下所示。然后将文件解码为位图。

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

答案 3 :(得分:0)

如果您有文件路径,只需直接使用BitmapFactory,但要告诉它使用保留alpha的格式:

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

options.inPreferredConfig = Bitmap.Config.ARGB_8888;

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

答案 4 :(得分:0)

有一个名为

的功能
createFromPath(String)
Drawable类中的

。 声明

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

将返回一个可绘制对象