Сохранение изображения, веб-просмотра, Android - PullRequest
3 голосов
/ 13 августа 2010

Я использую webview в Android для отображения изображений (в основном, с помощью google ajax API). Теперь, если я хочу сохранить изображение в локальном хранилище, как мне это сделать?У меня есть URL изображения, который можно использовать для сохранения.

Ответы [ 2 ]

3 голосов
/ 13 августа 2010

Если у вас есть URL изображения, это очень просто. Вам просто нужно извлечь байты изображения. Вот пример, который должен вам помочь:

try {
  URL url = new URL(yourImageUrl);
  InputStream is = (InputStream) url.getContent();
  byte[] buffer = new byte[8192];
  int bytesRead;
  ByteArrayOutputStream output = new ByteArrayOutputStream();
  while ((bytesRead = is.read(buffer)) != -1) {
    output.write(buffer, 0, bytesRead);
  }
  return output.toByteArray();
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}

Это вернет byteArray, который вы можете сохранить в любом месте или использовать повторно для создания изображения:

Bitmap bm = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
0 голосов
/ 04 апреля 2014

Я знаю, что это довольно старая версия, но она также действительна:

Bitmap image = BitmapFactory.decodeStream((InputStream) new URL("Http Where your Image is").getContent());

С заполненным растровым изображением просто сделайте это, чтобы сохранить в хранилище (Спасибо https://stackoverflow.com/a/673014/1524183)

FileOutputStream out;
try {
       out = new FileOutputStream(filename);
       image.compress(Bitmap.CompressFormat.PNG, 90, out);
} catch (Exception e) {
    e.printStackTrace();
} finally {
       try{
           out.close();
       } catch(Throwable ignore) {}
}

IHMO намного чище и проще, чем принятый ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...