Android: Как загрузить файл .png с помощью Async и установить его в ImageView? - PullRequest
4 голосов
/ 28 июля 2010

У меня есть URL-адрес изображения в формате .png, который необходимо загрузить и установить в качестве источника ImageView.Пока я новичок, поэтому есть несколько вещей, которые я не понимаю: 1) Где я могу хранить файл?2) Как мне установить его для ImageView в коде Java?3) Как правильно переопределить методы AsyncTask?

Заранее спасибо, будем признательны за любую помощь.

Ответы [ 2 ]

8 голосов
/ 28 июля 2010

Я не уверен, что вы можете создать png-файл из загрузки.Однако вот что я использую для загрузки изображений и их отображения в Imageviews:

Сначала вы загружаете изображение:

protected static byte[] imageByter(Context ctx, String strurl) {
    try {
        URL url = new URL(urlContactIcon + strurl);
        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;
    }
}

А затем создаете BitMap и связываете его с Imageview.:

bytes = imagebyter(this, mUrl);
bm = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
yourImageview.setImageBitmap(bm);

И это все.

РЕДАКТИРОВАТЬ
На самом деле, вы можете сохранить файл, выполнив это:

File file = new File(fileName);
FileOutputStream fos = new FileOutputStream(file);
fos.write(imagebyter(this, mUrl));
fos.close();
4 голосов
/ 23 марта 2011

Вы можете создать png-файл из загрузки.

bm.compress(Bitmap.CompressFormat.PNG, 100, out);

100 - ваше сжатие (PNG обычно без потерь, поэтому 100%)

out - это ваш FileOutputStream в файл, в который вы хотите сохранить png.

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