2

現在、カメラ サーフェス ビューの上に上部オーバーレイ イメージがあります。

私がやりたいのは、上のレイヤーと重なっている写真の部分だけを出力することです。これまでのところ、2 つの画像をマージできます。つまり、オーバーラップ レイヤーはカメラ ビューの上にあります。しかし、オーバーレイ部分だけを出力するにはどうすればよいですか? ありがとう

    public void onPictureTaken(byte[] data, Camera camera) {
        Bitmap resizedBottom;
        Bitmap resizedTop;

        BitmapFactory.Options options=new BitmapFactory.Options();
        options.inSampleSize = 8;
        Bitmap photo=BitmapFactory.decodeByteArray(data, 0, data.length,options);

        Matrix matrix = new Matrix();
        matrix.postRotate(passDegree);

        Bitmap rotatedBitmap = Bitmap.createBitmap(photo, 0, 0,photo.getWidth(), photo.getHeight(), matrix, true);
        photo.recycle();
        photo = null;

        if (h >= w) {
            h = w;
        } else {
            w = h;
        }

        if (getResources().getConfiguration().orientation ==  Configuration.ORIENTATION_LANDSCAPE) {
            resizedBottom = Bitmap.createScaledBitmap(rotatedBitmap,w,h,false);
            resizedTop = Bitmap.createScaledBitmap(topLayer,w,h,false);
        } else {
            resizedBottom = Bitmap.createScaledBitmap(rotatedBitmap,h,w,false);
            resizedTop = Bitmap.createScaledBitmap(topLayer,h,w,false);
        }

        Canvas c = new Canvas(resizedBottom);
        Resources res = getResources();

        Drawable drawable1 = new BitmapDrawable(res,resizedBottom);
        Drawable drawable2 = new BitmapDrawable(res,resizedTop);

        if (res.getConfiguration().orientation ==  Configuration.ORIENTATION_LANDSCAPE) {
            drawable1.setBounds(0, 0, w, h);
            drawable2.setBounds(0, 0, w, h);
        } else {
            drawable1.setBounds(0, 0, h, w);
            drawable2.setBounds(0, 0, h, w);
        }

        drawable1.draw(c);
        drawable2.draw(c);

        File sdDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
        // Write to SD Card
        String fileName = String.format(sdDir+"/%d.jpg", System.currentTimeMillis());
        OutputStream os = null;
        try {
            os = new FileOutputStream(fileName);
            resizedBottom.compress(Bitmap.CompressFormat.PNG, 50, os);
        } catch(IOException e) {
            e.printStackTrace();
        }           
        Log.i("test", "onPictureTaken - jpeg");
        resetCam();
    }

ここに画像の説明を入力

4

1 に答える 1