我想在使用毕加索下载后模糊我的图像。我实际上找到了一个可以为我的Image添加模糊效果的库:https://github.com/wasabeef/picasso-transformations
这是我使用的代码:
Picasso.get()
.load(currentEvent.posterDownloadPath)
.transform(BlurTransformation(25,3))
.into(recommendedEventViewHolder.blurryImageView)
但不幸的是我有错误:
我尝试了几种方法,但我仍然无法正确使用此库的模糊效果。你能帮我添加模糊效果吗?也许你有不同的方式(不使用这个库)?
Java还可以。
毕加索
对于使用毕加索,请按照下列步骤操作:
步骤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);
这就是全部,现在构建并运行应用程序。
享受:)
这段代码适合我:两个转换都来自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'