2012-02-16 3 views
1

Мой последний проект проекта требует от меня разработать мобильное приложение, которое извлекает ряд значений Json с сервера. Это мой первый опыт в разработке Android, но я узнал что-то и наслаждался опытом.Как преобразовать обратное изображение json string в отображаемое изображение

Мне удалось разработать следующее.

1-класс анализатора json, который извлекает значение.

2-a класс, который отображает эти значения.

3-база данных, в которой хранятся ответы json.

Однако я в один шаг от завершения моего проекта, я не могу отобразить адрес изображения строки ответа как реальные изображения (позор мне). Мне нужно сделать следующее.

1- Разбор строки пути изображения и отображение ответа в виде изображения.

Я провел большую часть своего времени, пытаясь найти решение в Интернете, переполнение стека. Но пока не повезло. Мне нужно сделать что-то вроде this, чтобы отобразить эти изображения вместе с текстовыми описаниями.

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

Кто может показать мне путь? , к этой выдающейся платформе.

+0

ли это * путь * (такие '/ изображений/foobar.png') к изображению посылается, или само изображение кодируется в формате JSON ? Не могли бы вы привести пример JSON, который вам нужно обработать? – Kitsune

+0

Я получаю изображения как. 01-27 03: 35: 42.566: I/System.out (2387): http://media.rightmove.co.uk/3k/2265/35402969/2265_9897_IMG_00_0000_max_200x138.jpg – SomCollection

+0

Sory не путь изображения, я получаю изображения в моем приложении, как указано выше. – SomCollection

ответ

1

если у вас есть изображение url в виде строки, вы можете загрузить и сохранить изображение, используя что-то вроде этого:

try { 
    Bitmap bitmap = null; 
    File f = new File(filename); 
    InputStream inputStream = new URL(url).openStream(); 
    OutputStream outputStream = new FileOutputStream(f); 

    int readlen; 
    byte[] buf = new byte[1024]; 
    while ((readlen = inputStream.read(buf)) > 0) 
     outputStream.write(buf, 0, readlen); 

    outputStream.close(); 
    inputStream.close(); 
    bitmap = BitmapFactory.decodeFile(filename); 

    return bitmap; 
} catch (Exception e) { 
    return null; 
} 

Для экономии, убедитесь, что у вас есть соответствующие разрешения, если вы собираетесь сохранить SD Card.

если вы просто хотите, чтобы загрузить изображение (без сохранения):

Bitmap bm = null; 
    try { 
     URL aURL = new URL(url); 
     URLConnection conn = aURL.openConnection(); 
     conn.connect(); 
     InputStream is = conn.getInputStream(); 
     BufferedInputStream bis = new BufferedInputStream(is); 
     bm = BitmapFactory.decodeStream(bis); 
     bis.close(); 
     is.close(); 
    } catch (IOException e) { 
     Log.e(TAG, "Error getting bitmap", e); 
    } 
    return bm; 

Просто убедитесь, что вы запрашиваете изображение в отдельном потоке или с помощью AsyncTask или иначе вы получите ошибки ANR!

+0

Спасибо за ваш ответ, я буду реализовывать это решение как можно скорее, это то, что я хочу преобразовать как изображение, которое возвращает строку. «photoThumbnailUrl»: «http: //media.rightmove.co.uk/31k/30471/29462938/30471_FLE100159_IMG_00_0002_max_200x138.jpg ", – SomCollection

+0

Спасибо за сообщение, теперь я нашел хороший учебник, который решает мои проблемы. – SomCollection

1

вы можете попробовать этот ImageDownloader класс из google. Это хорошо работает :) Является AsynkTask, который обрабатывает загрузку и устанавливает растровое изображение в ImageView.

ImageDownloader

Использование:

private final ImageDownloader mDownload = new ImageDownloader(); 
mDownload.download("URL", imageView); 
+0

Chronos, большое спасибо за сообщение, высоко оценен. – SomCollection

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