在下载之前,毕加索是否适合(),调整大小()和转换()缩小图像尺寸?

时间:2015-01-14 05:56:40

标签: android listview picasso

我知道通过使用fit()和resize(),图像在下载之前会缩小尺寸。然而,当使用listView并且图像的比率变化时,我需要将imageView的layout_width和layout_height设置为wrap_content,然后使用transform()在将图像放入imageView之前确定图像的比率。

例如。

        Picasso.with(mContext).load(region.getImage_url()).transform(new Transformation() {
            @Override
            public Bitmap transform(Bitmap source) {
                int targetWidth = getContext().getSharedPreferences(Constants.PREFERENCES, Context.MODE_PRIVATE).getInt(Constants.DEVICE_WIDTH, 0);
                double aspectRatio = (double) source.getHeight() / (double) source.getWidth();
                int targetHeight = (int) (holder.targetWidth * aspectRatio);
                Bitmap result = Bitmap.createScaledBitmap(source, targetWidth, targetHeight, false);
                if (result != source) {
                    // Same bitmap is returned if sizes are the same
                    source.recycle();
                }
                return result;
            }

            @Override
            public String key() {
                return "transformation" + " desiredWidth";
            }
        }).into(holder.imageView);

所以我的问题是Picasso的变换方法是否也会在下载之前处理图像的缩小?如果不是,那么最好的方法是什么,而没有为listview的imageViews设置固定比率?

2 个答案:

答案 0 :(得分:3)

我也和毕加索一起工作,我的回答是#34;不是"。图像始终先下载,然后重新调整/转换,然后显示

下载缩小尺寸(在ListView中显示)的唯一方法是提供较小尺寸或缩略图版本的图像。如果您在自己的服务器中托管图像,则很容易实现。

答案 1 :(得分:2)

您可以使用Thumbor服务在下载之前裁剪和调整图片大小。 Square有一个很好的Java客户端 - Pollexor。 Pollexor特别Picasso RequestTransformer。也就是说,您将所有预处理提取到后端。