gpt4 book ai didi

java - 如何从 AsyncTask 获取位图并将其设置为我的图像

转载 作者:行者123 更新时间:2023-12-01 22:56:34 25 4
gpt4 key购买 nike

我正在尝试使用 AsyncTask 将图像 URL 转换为位图,以便将其设置为图像。我不明白如何从 AsyncTask 中获取位图,以便我可以将其设置为我在循环中创建的图像。我还尝试将位图设置为 AsyncTask 内的图像。我的理解是,一切都必须在 AsyncTask 内完成,但我无法引用我想要为其设置值的图像。

我研究了 URL 到位图转换和 AsyncTask,但我不知道如何将它们组合起来以获得我想要的。这一定是一个相当常见的任务。为什么这么难?

如何在 AsyncTask 中引用我的图像?

我可以返回我的位图,然后将其设置为 AsyncTask 之外的图像吗?

是否有更简单的方法将 URL 设置为图像源?

我已经包含了迄今为止所拥有的内容。

感谢您的帮助并花时间阅读本文。

class BitmapTaks extends AsyncTask<String, Void, Bitmap> {

public Bitmap doInBackground(String... urls) {
Bitmap bm = null;
try {
URL aURL = new URL(urls[0]);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
} catch (IOException e) {
Log.e("img", "Error getting bitmap", e);
}
return bm;
}

protected void onPostExecute(Bitmap bm) {
//do something after execute


}
}

最佳答案

只需定义链接到要使用位图填充的 View 的最终 ImageView 变量即可:

     //inside some method e.g. onCreate()
final ImageView imageView = (ImageView) findViewById(R.id.myPrettyImage);

new AsyncTask<String, Void, Bitmap>() {
@Override
protected Bitmap doInBackground(String... params) {
/* here's your code */
}

@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);

imageView.setImageBitmap(bitmap);
}
}.execute(/*your params*/);

或者您可以在 AsyncTask 扩展任务中创建 ImageView 字段:

private class ExtendedAsyncTask extends AsyncTask<String, Void, Bitmap> {
private ImageView[] views;

public void ExtendedAsyncTask(ImageView[] views) {
this.views = views;
}

@Override
protected Bitmap doInBackground(String... params) {
/* your code here */
}

@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
for (ImageView view: views) {
view.setImageBitmap(bitmap);
}
}
}

并使用它:

ExtendedAsyncTask aTask = new ExtendedAsyncTask(new ImageView[]{myImageView1, myImageView2, myImageView3});
aTask.execute(/*some params*/);

关于java - 如何从 AsyncTask 获取位图并将其设置为我的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23940179/

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