i'm using picasso library to download and load images into imageView. now i want to know how i can get image width and height before loading them in imageViews ?
i have a listview with an adapter that contains two imageView(one of them is vertical and another is horizontal). depends on image width and height i want to load image into one of the imageviews.
You can get Bitmap dimensions only after downloading It - you must use synchronous method call like this:
final Bitmap image = Picasso.with(this).load("http://").get();
int width = image.getWidth();
int height = image.getHeight();
After this you can call again load with same url (It will be fetched from cache):
Picasso.with(this).load("http://").into(imageView)
Edit: Maybe better way:
Picasso.with(this).load("http://").into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
imgView.setImageBitmap(bitmap);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
Work for me.
Picasso.with(context).load(imageLink).into(imageView, new Callback() {
@Override
public void onSuccess() {
Picasso.with(context).load(imageLink).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Log.d("ComeHere ", " W : "+ width+" H : "+height);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
}
@Override
public void onError() {
}
});
来源:https://stackoverflow.com/questions/25522847/getting-image-width-and-height-with-picasso-library