Ich verwende Fresko, um Bilder zu meiner App anzuzeigen. Im Moment versuche ich, einige Filter auf meine Bilder anzuwenden, aber das Problem ist, dass die Filterbibliothek nur Bitmap ergibt. Aber die draweeView.setImageBitmap ist veraltet.Android Fresko lib, benutzerdefinierte Filter anwenden
Ich habe auch versucht, mit einem Postprozessor wie diese
MeshPostprocessor meshPostprocessor = new MeshPostprocessor();
meshPostprocessor.setFilter(filters.get(0));
draweeView = (SimpleDraweeView) view.findViewById(R.id.filter_image);
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(image)
.setPostprocessor(meshPostprocessor)
.setResizeOptions(new ResizeOptions(100, 100))
.build();
PipelineDraweeController controller = (PipelineDraweeController)
Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setOldController(draweeView.getController())
.build();
draweeView.setController(controller);
und hier ist der Postprozessor
public static class MeshPostprocessor extends BaseRepeatedPostProcessor {
private AbstractConfig.ImageFilterInterface filter;
public void setFilter(AbstractConfig.ImageFilterInterface filter) {
this.filter = filter;
update();
}
@Override
public String getName() {
return "meshPostprocessor";
}
@Override
public void process(Bitmap bitmap) {
bitmap = filter.renderImage(bitmap);
}
}
so, wenn ich auf einem Filter klicken ich diese nur laufen
meshPostprocessor.setFilter(colorFilterConfig.get(position));
Ich habe es mit dem Debugger versucht, der Code durchläuft alle Methoden (setFilter, process etc ..) aber das Bild ist nicht ch überhaupt altern ...
Was fehlt mir?
Ich brauchte den repeatedProcessor, weil ich in der Lage sein sollte, die Filter viele Male zu ändern. Dein Beitrag war wirklich hilfreich. Alles, was ich tun musste, ist einfach die Super am Ende hinzufügen –