Andoroidで画像処理入門
来週にはIS03が発売されるということで(予約済み)
Androidの勉強を再開しました
大学時代は画像処理に明け暮れていたので
Androidでもそちらの方面から攻めていこうかなと
この2つページを参考にしました
https://sites.google.com/a/gclue.jp/android-docs/35-%E7%94%BB%E5%83%8F%E3%81%AE%E6%8F%8F%E7%94%BB
http://labs.techfirm.co.jp/android/cho/279
package com.tkada.bitmaptest; import android.app.Activity; import android.os.Bundle; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.Log; import android.view.View; /** * 起動クラス */ public class Bitmap_test extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(new MainView( getApplication() )); } } /** * 描画用のクラス */ class MainView extends View { private Paint myPaint = new Paint(); private Bitmap myBitmap; /** * コンストラクタ * @param c */ public MainView(Context c) { super(c); /* Resourceインスタンスの生成 */ Resources res = this.getContext().getResources(); /* 画像の読み込み(res/drawable/testj.jpg) */ myBitmap = BitmapFactory.decodeResource(res, R.drawable.testj); } /** * 描画処理 */ protected void onDraw(Canvas canvas) { /* 背景色を設定 */ canvas.drawColor(Color.BLUE); //画像の縦横の大きさを取得 int Width=myBitmap.getWidth(); int Height=myBitmap.getHeight(); //出力用画像領域確保 Bitmap output=Bitmap.createBitmap(Width, Height, Bitmap.Config.ARGB_8888); //画像処理用配列 int[] pixels = new int[Width*Height]; //pixelsの配列にmyBitmapのデータを格納する myBitmap.getPixels(pixels, 0, Width, 0, 0, Width, Height); for(int x=0;x<Width;x++){ for(int y=0;y<Height;y++){ //1画素ずつ取得 int pixel=pixels[x+y*Width]; //RGB各色に分離 int r=Color.red(pixel); int g=Color.green(pixel); int b=Color.blue(pixel); //今回の画像処理はカラー画像をグレースケールに変換する int gray=(int)(r*0.3+g*0.59+b*0.11); //輝度値=R×0.30+G×0.59+B×0.11 //データを戻す pixels[x+y*Width]=Color.argb(Color.alpha(pixel),gray,gray,gray); } } //出力用の領域にセットする output.setPixels(pixels, 0, Width, 0, 0, Width, Height); /* Bitmapイメージの描画 */ canvas.drawBitmap(output, 0,0, myPaint); } }
画像処理できるフレームワークが何となく分かったので
ネイティブ化、カメラとの連携辺りをやっていつかはマーケットに公開したいな