如何使用毕加索模糊图像?

时间:2019-03-10 03:06:41

标签: android kotlin picasso

使用毕加索下载后,我想模糊图像。我实际上找到了一个可以为图像添加模糊效果的库:https://github.com/wasabeef/picasso-transformations

这是我使用的代码:

 Picasso.get()
            .load(currentEvent.posterDownloadPath)
            .transform(BlurTransformation(25,3))
            .into(recommendedEventViewHolder.blurryImageView)

但是不幸的是我有错误:

enter image description here

我尝试了几种方法,但是仍然无法获得使用该库的模糊效果的正确方法。你能帮我增加模糊效果吗?也许您有不同的方式(不使用此库)?

Java没问题。

2 个答案:

答案 0 :(得分:3)

毕加索

要使用毕加索,请按照以下步骤操作:

第1步

将此依赖关系添加到Gradle:

repositories {
    jcenter()
}

dependencies {
    compile 'jp.wasabeef:picasso-transformations:2.2.1'
    // If you want to use the GPU Filters
    compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1'
}

第2步

设置毕加索变换:

Picasso.get()
       .load(currentEvent.posterDownloadPath)
       .transform(new BlurTransformation(mContext, 25, 1))
       .into(recommendedEventViewHolder.blurryImageView);

像这样的科特林:

Picasso.get()
           .load(currentEvent.posterDownloadPath)
           .transform(BlurTransformation(mContext, 25, 1))
           .into(recommendedEventViewHolder.blurryImageView)

您也可以使用Blurry。 Blurry是适用于Android的简单模糊库。 但我建议使用Fresco。 Fresco是一个功能强大的系统,可在Android应用程序中显示图像。

壁画

要使用壁画,请按照以下步骤操作:

步骤1:创建Android项目,并在模块的build.gradle上添加壁画库依赖项并同步项目。

dependencies {
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation 'jp.wasabeef:fresco-processors:2.1.0'
}

步骤2:在MainActivity.java或Application.java的onCreate()方法中初始化壁画

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //initialize fresco
    Fresco.initialize(this);
    setContentView(R.layout.activity_main);

}

步骤3:在您的activity_main.xml内添加由Fresco Library提供的SimpleDraweeView。

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/sdv_image"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:src="@mipmap/ic_launcher" />

第4步:在编写用于模糊图像的代码之前,您必须处理三个主要的类。

i。后处理器:-为图像的模糊度定义质量。

ii.ImageRequest:-使用后处理器实例为控制器创建请求。

iii.PipelineDraweeController:-使用ImageRequest和SimpleDraweeView的实例为视图准备控制器。

第5步:在您的主要活动类中,创建一个具有上下文和半径的BlurPostprocessor实例,其中radius表示图像模糊的百分比。

Postprocessor postprocessor = new BlurPostprocessor(this,50);

步骤6: ImageRequest类通过Postprocessor实例构建具有模糊属性保留的图像请求。

 ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse("image url"))
        .setPostprocessor(postprocessor)
        .build();

步骤7:使用imagerequest和旧的simpleDraweeView创建PipelineDraweeController的新实例。

controller = (PipelineDraweeController) Fresco.newDraweeControllerBuilder()
        .setImageRequest(imageRequest)
        .setOldController(simpleDraweeView.getController())
        .build();

步骤8:将控制器传递给simpleDraweeView。

simpleDraweeView.setController(controller);

仅此而已,现在构建并运行该应用程序。

享受:)

答案 1 :(得分:0)

此代码对我有用:两种转换均来自wasabeef库

 SketchFilterTransformation transformation  = new SketchFilterTransformation(this);

 BlurTransformation transformation1 = new BlurTransformation(this);

 Picasso.get()
        .load(mImageUri)
        .transform(transformation)
        .transform(transformation1)
        .rotate(decodeRotation(orientation))
        .into((ImageView) findViewById(R.id.image));

URI是文件选择器的数据。

  

我的构建包中有这个

 implementation 'com.squareup.picasso:picasso:2.71828'
 implementation 'jp.wasabeef:picasso-transformations:2.2.1'
 // If you want to use the GPU Filters
 implementation 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1'