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

发布于 2024-09-12 10:28:04 字数 167 浏览 2 评论 0原文

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

预先致谢,将非常感谢任何形式的帮助。

I've got the URL of a .png image, that needs to be downloaded and set as a source of an ImageView. I'm a beginner so far, so there are a few things I don't understand:
1) Where do I store the file?
2) How do I set it to the ImageView in java code?
3) How to correctly override the AsyncTask methods?

Thanks in advance, will highly appreciate any kind of help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

渔村楼浪 2024-09-19 10:28:04

我不确定您是否可以从下载中明确构建 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();

I'm not sure you can explicity build a png from a download. However, here is what I use to download images and display them into Imageviews :

First, you download the image :

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;
    }
}

And then, create a BitMap and associate it to the Imageview :

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

And that's it.

EDIT
Actually, you can save the file by doing this :

File file = new File(fileName);
FileOutputStream fos = new FileOutputStream(file);
fos.write(imagebyter(this, mUrl));
fos.close();
逆光下的微笑 2024-09-19 10:28:04

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

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

100 是您的压缩(PNG 通常是无损的,因此 100%)

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

You can explicity build a png from a download.

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

100 is your compression (PNG's are generally lossless so 100%)

out is your FileOutputStream to the file you want to save the png to.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文