Java 将相机预览与图像合并?
我正在尝试从相机预览和它上面的Java 将相机预览与图像合并?,java,android,image,android-camera,augmented-reality,Java,Android,Image,Android Camera,Augmented Reality,我正在尝试从相机预览和它上面的ImageView制作合成图像。我有一个图像是一个透明的png,它设置在像这样的imageview上 ImageView iv = new ImageView(this); iv.setImageResource(R.drawable.one); 然后,我将其添加到已显示我的相机预览(继承SurfaceView)的framelayout中,如下所示: 我的imageview的图片如下: 屏幕是这样的(我不得不从另一台相机上拍摄照片,因为DDMS屏幕截图没有显示预
ImageView
制作合成图像。我有一个图像是一个透明的png,它设置在像这样的imageview上
ImageView iv = new ImageView(this);
iv.setImageResource(R.drawable.one);
然后,我将其添加到已显示我的相机预览(继承SurfaceView)的framelayout中,如下所示:
我的imageview的图片如下:
屏幕是这样的(我不得不从另一台相机上拍摄照片,因为DDMS屏幕截图没有显示预览画面,只有图像和黑屏,不知道这是否相关):
现在我的任务是用imageview拍摄这张照片。我提出了两种方法,我不知道它们是否可以实施
我想知道的是,这些方法中哪一种是可能的,以及如何实现?或者有更好的方法来完成这项工作吗?假设您已经从jpeg回调中获得了
字节[]数据形式的图像
将图像解码为可变位图:
Bitmap photo = BitmapFactory.decodeByteArray(data, 0, data.length);
photo = photo.copy(photo.getConfig(), true);
阅读覆盖图:
Bitmap overlay = BitmapFactory.decodeResource(getResources(), R.drawable.one);
在照片上绘制覆盖图:
Canvas canvas = new Canvas(photo);
canvas.drawBitmap(overlay, new Matrix(), null);
现在,photo
应该包含您的图像。您可以添加一个带有摄像头预览的视图,就像在单个活动上合并两个视图一样。我正在以2.1为目标构建一个可变位图,因为BitmapFactory.Options.inMutable在该API级别不可用。您是对的,它是添加到蜂巢中的。我更新了我的答案是的,应该是。请参阅photo.copy()
方法占用了大量内存,并引发了OutOfMemoryException
。然后,我使用createScaledBitmap
方法设置覆盖的高度和重量。但我先保存了原始照片。
Canvas canvas = new Canvas(photo);
canvas.drawBitmap(overlay, new Matrix(), null);