android - 如何使用 picasso 模糊图像?

标签 android kotlin picasso

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

这是我使用的代码:

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

但不幸的是我有错误:

enter image description here

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

Java 没问题。

最佳答案

picasso

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

第一步

将此依赖项添加到 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 变换:

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 . Blurry 是一个简单的 Android 模糊库。 但我建议 Fresco . Fresco 是一个强大的系统,用于在 Android 应用程序中显示图像。

壁画

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

第 1 步:创建 Android 项目并添加 fresco 库对模块和同步项目的 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() 方法中初始化 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: - 使用后处理器实例为 Controller 创建请求。

iii.PipelineDraweeController: - 使用 ImageRequest 和 SimpleDraweeView 实例为 View 准备 Controller 。

第 5 步:在您的主 Activity 类中创建一个带有上下文和半径的 BlurPostprocessor 实例,其中半径是指图像模糊度的百分比。

Postprocessor postprocessor = new BlurPostprocessor(this,50);

Step6: ImageRequest 类构建图像请求,后处理器实例持有模糊属性。

 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 步:将 Controller 传递给 simpleDraweeView。

simpleDraweeView.setController(controller);

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

享受那个:)

关于android - 如何使用 picasso 模糊图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55084070/

相关文章:

android - 无法使用改造解析对象内部的 jsonarray 的 jsonarray?

android - 设置 NumberPicker 中可见项的数量

android - 刚刚下载了 Android Studio,打开了我的第一个项目,我在 activity_main.xml 中有错误,但还没有做任何事情

android - picasso 花时间加载图像

android - picasso 没有加载图像

android - picasso 无法在 android studio 中加载

java - Android下的测试境界

java - 类数组,特定类的子类

gradle - Kotlin 1.3+打破SLF4J/log4j

Kotlin 和 MockK 抛出 com.sun.tools.attach.AttachNotSupportedException : no providers installed