gpt4 book ai didi

Android fresco lib,应用自定义过滤器

转载 作者:行者123 更新时间:2023-11-29 19:34:26 31 4
gpt4 key购买 nike

我正在使用 fresco 向我的应用程序显示图像。现在我正在尝试对我的图像应用一些过滤器,但问题是过滤器库只产生位图。但 draweeView.setImageBitmap 已弃用。

我也试过这样的后处理器

    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);

这是后处理器

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);
}
}

所以当我点击一个过滤器时,我就运行这个

meshPostprocessor.setFilter(colorFilterConfig.get(position));

我尝试使用调试器,代码遍历了所有方法(setFilter、process 等),但图像根本没有改变...

我错过了什么?

最佳答案

我认为您不需要 BaseRepeatedPostProcessor在你的情况下。正常BasePostProcessor在这里应该足够了。

但是,问题似乎出在您的自定义过滤器上:

@Override
public void process(Bitmap bitmap) {
bitmap = filter.renderImage(bitmap);
}

我想它会返回一个不同的位图?这在 Java/Fresco 中不起作用。

如果您的过滤器可以就地进行处理,您可以使用 process(Bitmap bitmap)并直接修改给定的位图(例如 bitmap.setPixel(...) )。

如果你不能原地做,你可以覆盖process(Bitmap destBitmap, Bitmap sourceBitmap)相反,修改 destBitmap .

如果您的位图改变了它的大小,您可以覆盖 CloseableReference<Bitmap> process(Bitmap sourceBitmap, PlatformBitmapFactory bitmapFactory) .但是,在这种情况下,请确保实际使用提供的 bitmapFactory以高效创建新位图。

有关更多信息,请查看 http://frescolib.org/docs/modifying-image.html了解更多信息或查看 JavaDoc for BasePostprocessor .

关于Android fresco lib,应用自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39410777/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com