Android 在加载毕加索中的实际图像之前模糊缩略图图像

Android 在加载毕加索中的实际图像之前模糊缩略图图像,android,imageview,picasso,Android,Imageview,Picasso,我使用毕加索显示URL中的图像,我在加载实际图像之前先显示缩略图,我想模糊缩略图,我如何在毕加索中实现 这是我的源代码 pb.setVisibility(View.GONE); Picasso.with(getApplicationContext()) .load(thumbUrl) // thumbnail url goes here //.placeholder(R.drawable.progress_anima

我使用毕加索显示URL中的图像,我在加载实际图像之前先显示缩略图,我想模糊缩略图,我如何在毕加索中实现

这是我的源代码

pb.setVisibility(View.GONE);
        Picasso.with(getApplicationContext())
                .load(thumbUrl) // thumbnail url goes here
                //.placeholder(R.drawable.progress_animation)
                .resize(width, width)
                .transform(new BlurTransformation(getApplicationContext(), 25, 1))
                .into(imageview, new Callback()
                {
                    @Override
                    public void onSuccess()
                    {
                        pb.setVisibility(View.GONE);
                        Log.e(TAG,"OnSuccess");
                        Picasso.with(getApplicationContext())
                                .load(url) // image url goes here
                                .resize(width, width)
                                .placeholder(imageview.getDrawable())
                                .into(imageview);
                        iv_reDownload.setVisibility(View.GONE);
                    }

                    @Override
                    public void onError()
                    {
                        pb.setVisibility(View.GONE);
                        Log.e(TAG,"OnError");
                        Picasso.with(getApplicationContext())
                                .load(url) // image url goes here
                                .resize(width, width)
                                .placeholder(imageview.getDrawable())
                                .into(imageview);
                        iv_reDownload.setVisibility(View.VISIBLE);
                    }
                });

不确定这是否有效,但我以前见过您可以使用:

.add(new ImageTransform(IMAGE_URL, new BlurTransformation(this)));

据我所知,毕加索目前不支持这种“功能”。Glide库的用法非常相似,它确实有一个功能,可以轻松使用“快速预览”,即加载速度比全尺寸图像快的低分辨率缩略图

函数是
缩略图(浮点)
并接受比例因子作为参数,例如
0.1f
是原始图像大小的十分之一

Glide的Case用法可能是这样的

Glide.with(mFragment)
            .load(wFile.getUriForThumb())                
            .override(length, length)
            .thumbnail(.05f)
            .placeholder(R.drawable.placeholder_image_128px)
            .into(holder.mImageThumb);
其中方法
override
与毕加索中的
resize(int,int)
非常相似


要在两个库之间进行完整的比较,您可以查看这本漂亮的指南:

最后,我在名为“毕加索变换”的帮助下解决了我的问题,我在我的项目中添加了以下依赖项

compile 'jp.wasabeef:picasso-transformations:2.2.1'
它不仅支持毕加索,而且还支持滑翔或壁画 我在毕加索内部调用了
BlurTransformation

这是一个完整的例子

pb.setVisibility(View.GONE);
        Picasso.with(getApplicationContext())
                .load(thumbUrl) // thumbnail url goes here
                //.placeholder(R.drawable.progress_animation)
                .resize(width, width)
                .transform(new BlurTransformation(getApplicationContext(), 25, 1))
                .into(imageview, new Callback()
                {
                    @Override
                    public void onSuccess()
                    {
                        pb.setVisibility(View.GONE);
                        Log.e(TAG,"OnSuccess");
                        Picasso.with(getApplicationContext())
                                .load(url) // image url goes here
                                .resize(width, width)
                                .placeholder(imageview.getDrawable())
                                .into(imageview);
                        iv_reDownload.setVisibility(View.GONE);
                    }

                    @Override
                    public void onError()
                    {
                        pb.setVisibility(View.GONE);
                        Log.e(TAG,"OnError");
                        Picasso.with(getApplicationContext())
                                .load(url) // image url goes here
                                .resize(width, width)
                                .placeholder(imageview.getDrawable())
                                .into(imageview);
                        iv_reDownload.setVisibility(View.VISIBLE);
                    }
                });
毕加索的模糊变换,参考:
我已经测试了Glide和Picasso的快速加载,如果你在Picasso中调整你的图像大小,它将提高你的加载速度,下面是代码

 Glide.with(context)
           .load(sArr.get(position).getThumbnail())
           .thumbnail(0.01f)
           .override(100,100)
           .centerCrop()
           .placeholder(R.drawable.default_picture)
           .into(holder.imgItem);
皮卡索代码

Picasso.with(context)
            .load(sArr.get(position).getThumbnail())
            .resize(100,100)
            .placeholder(R.drawable.default_picture)
            .into(holder.imgItem);
毕加索赢了


毕加索没有这个选项,但Glide有。@Gotiasits你能分享这个例子吗?毕加索有这个
add
函数吗?我发现非常糟糕的答案,减少1
Picasso.with(context)
            .load(sArr.get(position).getThumbnail())
            .resize(100,100)
            .placeholder(R.drawable.default_picture)
            .into(holder.imgItem);