Android 如何从imageview获得可绘制并转换为位图?
我已经创建了一个从facebook加载图片的应用程序。我用毕加索。毕加索将图像结果设置为“我的图像视图”。我想把图像转换成位图 以下是我从Facebook获取图像的代码:Android 如何从imageview获得可绘制并转换为位图?,android,bitmap,picasso,Android,Bitmap,Picasso,我已经创建了一个从facebook加载图片的应用程序。我用毕加索。毕加索将图像结果设置为“我的图像视图”。我想把图像转换成位图 以下是我从Facebook获取图像的代码: URL imageURL = new URL("https://graph.facebook.com/"+id+"/picture?type=large"); Picasso.with(getBaseContext()).load(imageURL.toString()).into(Imag
URL imageURL = new URL("https://graph.facebook.com/"+id+"/picture?type=large");
Picasso.with(getBaseContext()).load(imageURL.toString()).into(ImageView);
下面是我的代码,用于获取图像并转换为位图:(不工作)
ImageView.getDrawable()
始终返回null
我需要你的帮助。
谢谢将图像加载到ImageView中是否有效?可能发生的情况是,在毕加索完成图像加载之前调用ImageView.getDrawable()。什么时候调用getDrawable代码?试着做一些类似的事情:
Picasso.with(getBaseContext()).load(imageURL.toString())
.into(ImageView, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
BitmapDrawable drawable = (BitmapDrawable) ImageView.getDrawable();
...
}
@Override
public void onError() {
}
});
将图像加载到ImageView中是否有效?可能发生的情况是,在毕加索完成图像加载之前调用ImageView.getDrawable()。什么时候调用getDrawable代码?试着做一些类似的事情:
Picasso.with(getBaseContext()).load(imageURL.toString())
.into(ImageView, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
BitmapDrawable drawable = (BitmapDrawable) ImageView.getDrawable();
...
}
@Override
public void onError() {
}
});
这应该在异步任务中:
try {
URL url = new URL("http://....");
Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch(IOException e) {
System.out.println(e);
}
这应该在异步任务中:
try {
URL url = new URL("http://....");
Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch(IOException e) {
System.out.println(e);
}
您可以通过以下代码来完成
ImageView img;
img.setDrawingCacheEnabled(true);
Bitmap scaledBitmap = img.getDrawingCache();
您可以通过以下代码来完成
ImageView img;
img.setDrawingCacheEnabled(true);
Bitmap scaledBitmap = img.getDrawingCache();
你应该使用毕加索的API来完成你想要做的事情 一个选项是提供一个
Target
侦听器,在ImageView
上设置位图之前执行Bitmap
操作,如下所示:
Picasso.with(getBaseContext())
.load("https://graph.facebook.com/" + id + "/picture?type=large")
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
// Manipulate image and apply to ImageView
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
或者更好的方法是,使用毕加索
执行调整大小操作,不要自己进行任何位图
操作,例如:
Picasso.with(getBaseContext())
.load("https://graph.facebook.com/" + id + "/picture?type=large")
.resize(70, 70)
.into(ImageView);
你应该使用毕加索的API来完成你想要做的事情 一个选项是提供一个
Target
侦听器,在ImageView
上设置位图之前执行Bitmap
操作,如下所示:
Picasso.with(getBaseContext())
.load("https://graph.facebook.com/" + id + "/picture?type=large")
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
// Manipulate image and apply to ImageView
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
或者更好的方法是,使用毕加索
执行调整大小操作,不要自己进行任何位图
操作,例如:
Picasso.with(getBaseContext())
.load("https://graph.facebook.com/" + id + "/picture?type=large")
.resize(70, 70)
.into(ImageView);
为什么不让毕加索在检索位图时给你它呢?但我看到它的参数是imageview。您的想法是将imageview转换为位图?毕加索可以做多种选择。查看和。为什么不让毕加索在检索位图时给你它呢?但我看到它的参数是imageview。您的想法是将imageview转换为位图?毕加索可以做多种选择。再见,谢谢。它可以工作,但我们需要使用AsyncTask.:)非常感谢。它可以工作,但我们需要使用AsyncTask.:)