Android: невозможно вырезать наложенное изображение и фотографию внутри наложения - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть следующий код, где вы можете объединить данные фотографии и оверлейное изображение как одно растровое изображение и сохранить его.Проблема в том, что я не знаю, как обрезать только оверлейное изображение и фото в пределах оверлейного изображения.Я не хочу сохранять предварительный просмотр за пределами наложенного изображения.Было бы здорово, если бы вы могли помочь мне с образцом или советами!Я хотел бы услышать от вас!

Я хочу объединить данные обратного вызова с mOverlayLayout, его RelativeLayout с ImageView костюма, где вы можете разместить свое лицо.

jpegCallback = (byte[] data, Camera camera) -> {
            Bitmap tmp_bitmap = BitmapFactory.decodeByteArray (data, 0, data.length);

            int width = tmp_bitmap.getWidth ();
            int height = tmp_bitmap.getHeight ();
            Matrix matrix = new Matrix ();
            int angleToRotate = CameraUtil.getRoatationAngle(CameraMainActivity.this,
                    Camera.CameraInfo.CAMERA_FACING_BACK);
            angleToRotate = angleToRotate + mPortrait;
            matrix.postRotate (angleToRotate);
            Bitmap bitmap = Bitmap.createBitmap (tmp_bitmap, 0, 0, width, height, matrix, true);
            Bitmap baseBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);

            mOverlayLayout.setDrawingCacheEnabled(true);
            mOverlayLayout.buildDrawingCache();
            Bitmap overlay = Bitmap.createBitmap(mOverlayLayout.getDrawingCache());
            mOverlayLayout.setDrawingCacheEnabled(false);


            Bitmap mergedImage = mCameraUtil.combineImages(overlay, baseBitmap);

// Это метод объединения изображений

            public Bitmap combineImages(Bitmap frame, Bitmap image) {
        //Base frame source
        Rect src = new Rect(0,0, frame.getWidth(), frame.getHeight());
        RectF dst = new RectF(0, 0, image.getWidth(), image.getHeight());
        Paint paint = new Paint();
        Canvas comboImage = new Canvas(image);

        comboImage.drawBitmap(frame, src, dst, paint);
        Runtime.getRuntime().gc();
        return image;
}

// Например, как мне обрезать только оверлей изображения и фотографии в оверлее?

[образец изображения 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...