画像の解析といっても、撮影した画像をすべて処理していたのでは時間がかかる。そこで、写真の中の1ピクセルを取得して、カードに個別の情報を持たせるためのパラメータを決定する。
まずはrepaintで描画を行い、Graphics.getRGBPixel(int x, int y)で現在描画されている画面の任意の点のピクセルのRGB値を取得する。
|
取得したRGB値は、0xRRGGBBの形式の整数値である。以下は、RとGとBを乗算して、その値から1〜9の値を導いている例である。
|
ほかにも、特定の色に反応する処理をしたい場合は、RGBのそれぞれの比を算出し、Bが強ければ青、RとGが強いが、Bが弱ければ黄色のように判定する方法が考えられる。
解析が済んでパラメータが決定したら、カメラで撮影した画像をゲームで使用するカードの大きさに切り抜いて保存する。以下は、Graphics.getPixelsで画面中央から50×30のピクセルを取得し、そのピクセル配列を元に、カード用の画像を作成する方法である。
|
今回のソースはここからダウンロードできる。実際にコンパイルして実行し、カード生成モードへ遷移してみる。
エミュレータで写真撮影(Camera.takePicture())を行うと、ファイル参照のウィンドウが表示されるので、176×144の画像を選択する。この画像を撮影された画像として動作確認を行える。
今回のプロジェクトフォルダにcamフォルダを追加した。中には、green.jpgとpink.jpgが入っている。エミュレータでそれぞれの画像を選択すると、カードのパラメータは6と2になる。ソースを実際の端末にダウンロードして動作させると、写真撮影時にカメラが起動され、撮影した画像によりパラメータが変化する。
次回は、スクラッチパッド(ローカルの保存領域)を利用して、撮影データを保存、読込する処理と、画像をネットワークからダウンロードして保存、読込する処理を解説する。
|
Copyright © ITmedia, Inc. All Rights Reserved.