2013-04-10 3 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

+0

Что такое телевизор в приведенном выше коде. это текстовое представление? – Raghunandan

+0

Я не получаю никакой ошибки, так как я поставил попытку и поймал, но приложение сработает, если у меня его нет. ImageView tv = (ImageView) findViewById (R.id.imageView1); –

ответ

17

, если у меня есть файл 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); 

к avoide из памяти ошибки я буду saggest вы ниже код ...

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

У меня это работает, я думаю, что у меня было все в порядке, проблема в том, что я пытался запустить его как функцию, а затем вызвать функцию, она работает, если я не использую функции. Я не уверен, почему это не работает, когда я использую функции. Где бы вы определили функцию и где ее можно назвать? –

+0

Это поможет мне .. :) Спасибо – ADT

+0

если я использую этот один вариант.inSampleSize = 8; «изображение становится очень маленьким, и ясность также уменьшается. –

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

возвращает объект Drawable

Смежные вопросы