Как я могу установить изображение из пути к файлу? - PullRequest
0 голосов
/ 08 ноября 2011

Я сохраняю изображение с камеры устройства в каталог на SD-карте (например: /sdcard/appName/image.jpg), затем сохраняю путь в базу данных.Моя проблема в том, что я не могу загрузить изображения в ListView с помощью адаптера курсора.

Я попробовал следующий код, где helper.getImg(); - это метод из моей базы данных, который возвращает String (путь к файлу), но он не работает.

icon=(ImageView)row.findViewById(R.id.icon_pura);
String imgPath=helper.getImg(c);
Bitmap myBitmap=BitmapFactory.decodeFile(imgPath);
icon.setImageBitmap(myBitmap);

Ответы [ 3 ]

0 голосов
/ 08 ноября 2011
String filepath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/Directory name/";
File file = new File(filepath,imagename);
FileInputStream fs = null;
try 
{
    fs = new FileInputStream(file);
} 
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
    e.printStackTrace();
}

BitmapFactory.Options bfOptions = new BitmapFactory.Options();
            /*
             * bfOptions.inDither=false; //Disable Dithering mode
             * bfOptions.inPurgeable=true; //Tell to gc that whether it needs
             * free memory, the Bitmap can be cleared
             * bfOptions.inInputShareable=true;*/

bfOptions.inJustDecodeBounds = false;
bfOptions.inTempStorage = new byte[32 * 1024];
try {
    Bitmap originalImage = BitmapFactory.decodeFileDescriptor(fs.getFD(), null,bfOptions);
    icon.setImageBitmap(originalImage);
} catch (IOException e) {
// TODO Auto-generated catch block
                e.printStackTrace();
}
0 голосов
/ 08 ноября 2011

Если вы следуете (правильному) совету Химаншу, убедитесь, что, если вы собираетесь разрешить пользователю возможность загрузки и повторной загрузки изображения, убедитесь, что вручную icon.setImageBitmap (null);между загрузками, потому что в противном случае Android утечет эту память, и вы будете разрушать ваше приложение.Он не на 100% постоянен и имеет отношение к размерам загружаемых изображений, но я обнаружил эту утечку несколько дней назад и на 100% уверен, что она есть.

0 голосов
/ 08 ноября 2011

ответ связан с URI, и вам нужно использовать функцию externalstorage().Использование заданных путей не будет работать на каждом устройстве

, в любом случае вы сохраняете путь в URI, который является более гибким для получения и анализа элементов по этому пути

...