我正在尝试创建和应用程序,要求我拍摄以前捕获的图像并将其放在当前相机预览上,大约0.5 alpha。该“叠加”图像用作捕获下一张图像的指南;客户端将使用叠加层将预览中的当前帧与先前捕获的图像进行比较。解决此问题的一种简单方法是检索捕获的最后一个文件并将其设置为视图。但是,捕获的图像并不总是与相机预览的分辨率和宽高比相匹配,导致叠加和预览在对象的表示中不匹配(同一对象在预览和捕获的图像之间的大小可能不同)。我试过了:
目前,我想要了解我将如何处理的两种可能的方法是:
当然,任何其他建议都将不胜感激。
注意:有类似的问题,我花了几个小时来完成它们,但没有一个能正确解决我的问题或提供足够的细节。
答案 0 :(得分:2)
我使用两个TextureView组件工作:
Activity.java(实现SurfaceTextureListener):
@Override
public void onClick(View view) {
{
Canvas canvas = alphaCameraTextureView.lockCanvas();
canvas.drawBitmap( cameraTextureView.getBitmap(), 0, 0, null );
alphaCameraTextureView.unlockCanvasAndPost( canvas );
}
@Override
public void onSurfaceTextureAvailable( SurfaceTexture surfaceTexture, int width, int height )
{
try
{
camera = Camera.open();
camera.setDisplayOrientation( 90 );
camera.setPreviewTexture( surfaceTexture );
camera.startPreview();
}
catch (IOException e ) { e.printStackTrace(); }
}
@Override
public boolean onSurfaceTextureDestroyed( SurfaceTexture surfaceTexture )
{
camera.stopPreview();
camera.release();
return false;
}
layout.xml中的TextureViews:
<TextureView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/cameraTextureView"
android:layout_weight="0"/>
<TextureView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/alphaCameraTextureView"
android:alpha="0.5"
android:layout_weight="0" />