カメラのプレビューでオーバーレイしたBitmapの合成について

1,636 views
Skip to first unread message

BAL

unread,
Feb 2, 2011, 11:02:26 PM2/2/11
to 日本Androidの会
はじめて投稿させていただきます。
現在Galaxy Tabでカメラを起動してプレビュー画面の上にBitmapを合成した画像を保存するアプリを開発しています。

プレビュー上Bitmapのオーバーレイはできているのですがそのまま撮影し画像を保存した際に合成したBitmap画像がY方向(縦)に長くなってし
まいます。

仕様としてはカメラプレビューするSurfaceViewにBitmapをオーバーレイ表示するOverlayVeiwをaddContentView
して表示しCamera.takePictureのonPictureTakenコールバックで処理しています。

//オーバーレイクラス
private OverlayView overLay;

public void onCreate(Bundle savedInstanceState) {
/-----------省略--------------/
//SurfaceViewを継承したカメラプレビュークラス
setContentView(new CameraPreview(this));
//オーバーレイするためViewを追加
overLay = new OverlayView(this);
addContentView(overLay,new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));

/-----------省略--------------/
}

//撮影、合成処理
public void onPictureTaken(byte[] data, Camera camera) {
//カメラプレビュー画像
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
// オーバーレイイメージ viewから画像を取得
Bitmap overlayBmp = overLay.getDrawingCache();
//空のビットマップ
Bitmap blankBitmap =
Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(),
Bitmap.Config.ARGB_8888);
//キャンバスを作成
Canvas canvas = new Canvas(blankBitmap);
//画像を合成
canvas.drawBitmap(bitmap, null,new Rect(0, 0, bitmap.getWidth(),
bitmap.getHeight()), null);
canvas.drawBitmap(overlayBmp, null,new Rect(0, 0, bitmap.getWidth(),
bitmap.getHeight()), null);

/-----------省略--------------/



色々調べていたのですがカメラプレビュー画像(bitmap)のサイズがオーバーレイ用のViewより取得した画像(overlayBmp)とことなっ
ておりそれが原因でoverlayBmpの画像が変形していることがわかりました。

しかしながら具体的な解決策がわからず悩んでおります。

申し訳ございません。お分かりになる方がいましたらご教授ください
よろしくお願いいたします
Reply all
Reply to author
Forward
0 new messages