2017-04-07 4 views
20

私はカスタム画像フィルタプロジェクトに取り組んでいます。私はFunny face effect appのように歪んだフィルタを適用することになっています。 Funny Face Effectsで利用可能な最初の3つのフィルタを開発したいと思います。ドラッグディストーションイメージフィルタをアンドロイドで実装する方法は?

このような効果を実現するには、GPUImageView GPUImageを使用していましたが、これはシークバーを使って画像を中央から歪ませています。私は達成しましたバルジこれからの歪み。 ドラッグフィルターを実装する方法はありますか?ドラッグジェスチャーで画像を歪めることはできますか?

GPUImage以外の他の第三者のクラスを検索しようとしました。しかし、我々は有用なものを見つけることができませんでした。

私たちのクエリは下の通りです: -

1)それがドラッグジェスチャを使用してドラッグフィルタを適用することは可能ですか? (任意のコードスニペットまたは参照は相当なものです)

2)上記の結果を得るのを助けることができるGPU以外の第三者のクラス。

ありがとうございます!これを達成するため

enter image description here

+0

また、既に試した内容やあなたが出会ったライブラリの説明付きのコードスニペットを投稿してください。 – DroidDev

+0

@DroidDev、私はhttps://github.com/Cyber​​Agent/android-gpuimageでエフェクトフィルターを使ってみました。 1つのフィルターを適用するとうまくいきますが、複数のフィルターを適用しようとすると完全に間違ってしまいます。画像はランダムな点から歪んでいます。 – Maddy

+0

https://github.com/ragnraok/android-image-filterモーションブラー機能 – Rndomcoder

答えて

5

一つの方法は、フラグメントシェーダに適用する変形を指定するために追加のテクスチャを使用することです。ユーザーが画像に触れて変形を適用すると、アプリからそのテクスチャの内容を変更できます。

GPUImageBulgeDistortionFilterGPUImageFilterは、1つのテクスチャのみを使用するように設計されています。

テクスチャバインディング(glBindTexture)とGPUImageFilterのフラグメントシェーダ(glUniform1i)への割り当てを、新しいテクスチャに(0ではなく)1を使用して複製する必要があります。また、glGetUniformLocationを複製し、inputImageTextureの代わりに他の名前、例えばinputImageTexture2を使用する必要があります。

GPUImageBulgeDistortionFilterにフラグメントシェーダを変更または追加するGPUImageBulgeDistortionFilter由来する新しいクラスの作成「均一sampler2D inputImageTexture2と、\ n」+

最後に同じフラグメントシェーダにinputImageTextureでデータを変形するinputImageTexture2テクセルを使用するコードを追加。

関連する問題