3

カメラのプレビューとその上にある から合成画像を作成しようとしてImageViewいます。このようなイメージビューに設定された透明なpngである画像が1つあります

ImageView iv = new ImageView(this);
iv.setImageResource(R.drawable.one);

次に、カメラのプレビューを既に表示しているフレームレイアウトに追加します (SurfaceView を継承します)。

preview = (FrameLayout) findViewById(R.id.camera_preview);
preview.addView(cp); //cp is a reference to a camera preview object
preview.addView(iv);

私のイメージビューの写真は次のとおりです。

ここに画像の説明を入力

そして、画面は次のようなものです(DDMSスクリーンショットは画像と黒い画面のみのプレビューを表示していなかったので、別のカメラから写真を撮らなければなりませんでしたが、それが関連しているかどうかはわかりません):

ここに画像の説明を入力

今の私の仕事は、イメージビューでその写真を撮ることです。2つのアプローチを思いつきましたが、どちらも実装できるかどうかはわかりません

  1. 写真を個別に保存し、どのカバーが画像にあったかを追跡してから、何らかの方法でマージします。これはどのように行うことができますか?
  2. 両方のビューが存在するフレームレイアウトの外観を取得し、画像として保存します
  3. 特定の領域のスクリーンショットを撮ります。これが可能な場合は、最後の手段としてこれを行います。

私が知りたいのは、これらのアプローチが可能であり、どのように実行できるかです。またはこれを行うためのより良い方法はありますか?

4

1 に答える 1

5

byte[] datajpegコールバックからの形式の画像がすでにあると仮定します。

  1. 画像を可変ビットマップにデコードします。

    Bitmap photo = BitmapFactory.decodeByteArray(data, 0, data.length);
    photo = photo.copy(photo.getConfig(), true);
    
  2. オーバーレイを読む:

    Bitmap overlay = BitmapFactory.decodeResource(getResources(), R.drawable.one);
    
  3. 写真にオーバーレイを描画します。

    Canvas canvas = new Canvas(photo);
    canvas.drawBitmap(overlay, new Matrix(), null);
    

今、photoあなたの画像が含まれている必要があります。

于 2012-04-25T13:03:09.183 に答える