Android:如何使用Async下载.png文件并将其设置为ImageView?

Ego*_*gor 4 png android android-asynctask

我有一个.png图像的URL,需要下载并设置为ImageView的源.到目前为止我是初学者,所以有一些我不明白的事情:1)我在哪里存储文件?2)如何在java代码中将其设置为ImageView?3)如何正确覆盖AsyncTask方法?

在此先感谢,将非常感谢任何形式的帮助.

Sep*_*phy 8

我不确定你是否可以从下载中明确建立一个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;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,创建一个BitMap并将其与Imageview相关联:

bytes = imagebyter(this, mUrl);
bm = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
yourImageview.setImageBitmap(bm);
Run Code Online (Sandbox Code Playgroud)

就是这样.

编辑
实际上,您可以通过执行以下操作来保存文件:

File file = new File(fileName);
FileOutputStream fos = new FileOutputStream(file);
fos.write(imagebyter(this, mUrl));
fos.close();
Run Code Online (Sandbox Code Playgroud)


Rab*_*oss 5

您可以从下载中明确构建 png。

bm.compress(Bitmap.CompressFormat.PNG, 100, out);
Run Code Online (Sandbox Code Playgroud)

100是你的压缩率(PNG 通常是无损的,所以 100%)

out是您要将 png 保存到的文件的 FileOutputStream。