当前位置: 首页 > 知识库问答 >
问题:

摄像头预览显示在android中压缩

锺离韬
2023-03-14

我的意图是有一个方形相机预览。

我没有1:1比例的相机预览可用(我在Nexus 5模拟器中),所以我的最佳尺寸可用为640 x 480,所以为了适应正方形预览,我将SurfaceView尺寸设置为与纵横比相等,但将屏幕外的边距偏移一半,以在屏幕上只保留裁剪的正方形。表面视图本身的大小和偏移量是正确的,但是相机预览本身仍然在正方形内显示压缩后的预览,而不是以正确的纵横比部分地在屏幕外显示。

有什么想法吗?或者更好的是,叫我愚蠢,给我指明一个更好的解决方案的方向。

Camera.Parameters parameters = camera.getParameters();
List<Size> sizes = parameters.getSupportedPreviewSizes();
Size optimalSize = getOptimalPreviewSize(sizes, imageHolder.getMeasuredWidth(), imageHolder.getMeasuredHeight());

parameters.setPreviewSize(optimalSize.width, optimalSize.height);

int screenWidth = imageHolder.getMeasuredWidth();
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(surfaceView.getMeasuredWidth(), surfaceView.getMeasuredHeight());

int ratio = screenWidth / optimalSize.height;

params.width = optimalSize.width * ratio;
int offset = params.width - screenWidth;
if(offset > 0) {
   offset = offset/2;
}

params.setMargins(-offset,0,0,0);
surfaceView.setLayoutParams(params);
camera.setParameters(parameters);

camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();

这是照片被捕获后在相同大小的正方形中看起来的样子

共有1个答案

潘星阑
2023-03-14

我认为最简单的解决办法就是屏蔽掉那些你不想看到的相机预览部分。在上面放个风景就行了。另一种方法是做一些实时图像处理,这将需要你处理NDK。

 类似资料:
  • 我正在为我的Android应用程序使用此相机预览应用程序。 我想要全屏幕的相机预览。因此,我使用Android API中的示例尝试将预览设置为全屏。这就是我试图做到的: 我使用相对布局作为我的布局。我的布局设置如下: 我仍然无法在整个屏幕上预览我的相机。我想知道如何预览整个屏幕。

  • 我已经和https://github.com/commonsguy/cwac-camera 创建了我的自定义CameraFragment和自定义CameraHost。 我已经重写了getPictureSize和getPreviewSize。通过这两种方法,我能够找出可以使用的大小。我的总体想法是拍摄一幅方形图像,并在拍摄前预览它。 我一直在测试,没有设备返回正方形格式的大小,所以我想最好的方法是选

  • 我正在准备一个小的Android应用程序,捕捉照片和录音从用户。类似用户会用他的相机拍一张照片,然后在观看该照片时添加音频评论。

  • 我已经复制粘贴了我在stackoverflow上找到的一些代码,将默认的相机预览YUV转换成RGB格式,然后上传到OpenGL进行处理。这很好,问题是大部分中央处理器都忙于将YUV图像转换成RGB格式,这变成了瓶颈。 我想将YUV图像上传到GPU,然后在片段着色器中将其转换为RGB。我使用了在CPU上运行的Java YUV to RGB函数,并试图使其在GPU上运行。 这变成了一场小小的噩梦,因为

  • 在android中,如何在媒体录制器启动前显示预览界面。我的应用程序具有视频录制功能,当我导航到视频录制片段时,它会显示黑屏,当我使用开始按钮开始录制时,相机预览是显示和录制开始。 如何在录制之前开始预览.我已经添加了我在片段的onCreateView()中使用的代码- 我在“开始”按钮上使用的代码- 所以我可以用上面的代码重新编码视频,但不能在录制开始前显示预览。请帮我找到我想去的地方。因为在录

  • 表情测试 图片转文字 相框 拍摄图片