gpt4 book ai didi

java - 将图像下载到 Android 中的位图文件中

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:13 25 4
gpt4 key购买 nike

我一直在尝试将图像下载到位图元素中,以将它们加载到带有图像的 gridView 中,但我需要异步执行,因为如果没有给出错误“android.os.NetworkOnMainThreadException”。

搜索时我发现了很多教程可以做到这一点,但所有教程都在完成后将此元素添加到 ImageView 中。除了位图之外还有什么方法可以做到这一点吗?

这里我找到了无需异步下载的方法:

URL url = new URL("http://....");
Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream());

还有一个:

public static Bitmap getBitmapFromURL(String src) {
try {
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}

Android load from URL to Bitmap

最佳答案

将您的 getBitmapFromURL 方法包装到 AsyncTask 中,如下所示:

private class GetBitmapFromURLAsync extends AsyncTask<String, Void, Bitmap>   {
@Override
protected Bitmap doInBackground(String... params) {
return getBitmapFromURL(params[0]);
}

@Override
protected void onPostExecute(Bitmap bitmap) {
}
}

将上述 AsyncTask 嵌套到您的 Activity 中:

public class MyActivity extends Activity {
// To store the Bitmap returned by doInBackground asynctask
private Bitmap result;
// existing Activity code
...

private class GetBitmapFromURLAsync extends AsyncTask<String, Void, Bitmap> {
@Override
protected Bitmap doInBackground(String... params) {
return getBitmapFromURL(params[0]);
}

@Override
protected void onPostExecute(Bitmap bitmap) {
// return the bitmap by doInBackground and store in result
result = bitmap;
}
}

并调用上面的代码:

GetBitmapFromURLAsync getBitmapFromURLAsync = new GetBitmapFromURLAsync();
getBitmapFromURLAsync.execute("http://....");

关于java - 将图像下载到 Android 中的位图文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37510411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com