2014年5月25日日曜日

Androidで画像エフェクト実装

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 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...