androidで画像にエフェクトをかける調査をしたのでメモ
環境
- eclipse
- android4.0以上
GPUImage for Android
調査したのはandroid版のGPUImage。ソースコードが一年前から変更されてないのが気になります。(従業員の回転の早い会社だから、メインで作成している社員さんが辞めたのかな?)
ソースを見るとopenGLでゴリゴリと書いています。私はopenGLは初心者レベルで得意じゃないけど、勉強の役に立ちそう。といわけで基本的な実装を実施。
導入手順
- android-gpuimageのサイトからダウンロード
- プロジェクトをeclipseにimport。必要なファイルはlibraryフォルダ以下なので、library配下をプロジェクトとしてimportします。
- cleanして、利用するプロジェクトにライブラリとして設定します。
サンプルコード
色相・彩度(Saturation)
GPUImage gpuImage = new GPUImage(this); gpuImage.setImage(bitmap); gpuImage.setFilter(new GPUImageSaturationFilter()); Bitmap newbitmap = gpuImage.getBitmapWithFilterApplied();
基本的な使い方は上記のやり方となります。あとは取得したBitmapオブジェクトをImageViewに設定します。上記のコードの場合、フィルターはnew GPUImageSaturationFilterで設定しています。色々と用意されているフォルターは全てGPUImageFilterクラスを継承しています。ソースコードを見ると、GPUImageクラスのsetFilterでGLSurfaceViewを使ってrender処理をおこなっています。
GLSurfaceViewはOpenGLのレンダリングが可能なビューを提供してくれるクラスです。
レンダリング (描画) を受け持つのはGPUImageRendererクラスです。これがRendererをimplementsしたクラスです。
androidアプリの開発をしていると、時々OpenGLをやっておけばよかったと思うことがあると思います。android版のGPUImageはOpenGLの基本を学習するのにも適したコードだと思います。私も知識不足なので色々と学習してみたいと思います。
参考サイト
0 件のコメント:
コメントを投稿