2010-08-13 3 views
3

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

ответ

2

Если у вас есть 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

Спасибо, я работал над подобной строкой, и мне удалось сохранить изображение, я использовал объект File, чтобы указать путь к тому, где хранить изображение. – sat

+0

молодец. действительно, вы можете загружать изображение из другого источника, конечно. – Sephy

+0

Я сделал это гораздо более простым способом: Bitmap image = новый URL-адрес BitmapFactory.decodeStream ((InputStream) "(" Http где ваше изображение "). GetContent()); –

0

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

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

с Bitmap заполненным, просто сделать это, чтобы сохранить хранения (Благодаря 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 намного более чистый и простой, чем принятый ответ.

+0

создание ошибки изображения изображения объекта Bitmap. – Aashish

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