使用毕加索库获取图像宽度和高度

use*_*089 17 android image picasso

我正在使用毕加索库下载并将图像加载到imageView中.现在我想知道在将它们加载到imageViews之前我如何获得图像的宽度和高度?

我有一个包含两个imageView的适配器的列表视图(其中一个是垂直的,另一个是水平的).取决于图像宽度和高度我想将图像加载到其中一个图像视图中.

Yur*_*raj 33

只有在下载后才能获得位图尺寸 - 你必须使用这样的同步方法调用:

final Bitmap image = Picasso.with(this).load("http://").get();
int width = image.getWidth();
int height = image.getHeight();
Run Code Online (Sandbox Code Playgroud)

在此之后,您可以使用相同的URL再次调用load(它将从缓存中获取):

 Picasso.with(this).load("http://").into(imageView)
Run Code Online (Sandbox Code Playgroud)

编辑:也许更好的方式:

 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) {

            }
        });
Run Code Online (Sandbox Code Playgroud)

  • 只是为了完成答案:你不能在主线程中进行这个调用,因为它是同步的.因此,您需要启动一个AsyncTask,它在后台执行此操作,并在加载图像时返回. (4认同)