我有以下代码,您可以在其中将照片数据和叠加图像组合为一个位图,然后将其保存。问题是我不知道如何仅裁剪覆盖图像和覆盖图像中的照片图像。我不想将预览图像保存在叠加图像之外。如果您能帮我提供样品或提示,那就太好了!我很想听听你的意见!
我想将回调的数据与 mOverlayLayout 合并,它是一个带有 ImageView 的 RelativeLayout,你可以在其中放置你的脸。
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