2017-04-07 91 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 。