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

问题描述 投票:0回答:2

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

这是我使用的代码:

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

但不幸的是我有错误:

enter image description here

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

Java还可以。

android kotlin picasso
2个回答
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);

在kotlin像这样:

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

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

冷静

对于使用Fresco,请按照下列步骤操作:

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

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

第2步:在MainActivity.java或Application.java的onCreate()方法中初始化fresco

@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.Postprocessor: - 定义图像模糊度的质量。

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

iii.PipelineDraweeController:-Prepare控制器,用于使用ImageRequest和SimpleDraweeView的实例进行查看。

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

Postprocessor postprocessor = new BlurPostprocessor(this,50);

Step6:ImageRequest类使用由Postprocessor实例保持的blur属性构建图像请求。

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

Step7:使用imagerequest和旧的simpleDraweeView创建PipelineDraweeController的新实例。

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

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

simpleDraweeView.setController(controller);

这就是全部,现在构建并运行应用程序。

享受:)


0
投票

这段代码适合我:两个转换都来自wasabeef lib

 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是文件选择器的数据。

我在Build gradle中有这个:

 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'
© www.soinside.com 2019 - 2024. All rights reserved.