2017-04-07 69 views
20

我正在处理自定义图像过滤器项目。我遇到了一个具有挑战性的任务,我应该使用失真滤波器,如在Funny face effect app中可以看到的那样。我想开发滑稽面部特效中的前3个过滤器。如何在android中实现拖动失真图像过滤器?

因此,为了实现这样的效果,我开始使用GPUImageView GPUImage,并且在此使用seekbar从中心扭曲图像。我已经实现了Bulge这个失真。 但是,有什么办法可以实现拖动过滤器,我可以通过拖动手势来扭曲我的图像?

我们试图寻找除GPUImage之外的其他第三方类。但我们找不到有用的东西。

我们的查询是为下: -

1)是否有可能使用拖曳手势应用将过滤器? (任何代码片段或参考可评估)

2)GPU以外的任何其他第三方类可以帮助我们获得以上结果。

在此先感谢!

enter image description here

+0

请同时发布一些代码片段,说明您已经尝试了什么或者遇到了哪些库。 – DroidDev

+0

@DroidDev,我试着用https://github.com/Cyber​​Agent/android-gpuimage这是有影响过滤器。当应用单个过滤器时它工作正常,但当我尝试应用多个过滤器时,它完全出错。图像从随机点变得扭曲。 – Maddy

+0

https://github.com/ragnraok/android-image-filter。您可以尝试运动模糊功能 – Rndomcoder

回答

5

一个实现它的方法是使用一个额外的纹理来指定片段着色器变形申请。您可以在用户触摸图像以应用变形时从应用程序修改纹理内容。

GPUImageBulgeDistortionFilter延伸GPUImageFilter它被设计为仅使用一个纹理。

您需要在GPUImageFilter中使用1为新纹理(而不是0)复制纹理绑定(glBindTexture)和赋值给片段着色器(glUniform1i)。您还需要复制glGetUniformLocation并使用其他名称而不是inputImageTexture,例如inputImageTexture2。

在GPUImageBulgeDistortionFilter修改片段着色器或创建从GPUImageBulgeDistortionFilter衍生添加一个新类“均匀sampler2D inputImageTexture2; \ n”个+

最后补充码在相同的片段着色器使用inputImageTexture2纹素变形数据在inputImageTexture 。