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

如何将Camera2 API设置为标准摄像头?

狄飞尘
2023-03-14

如果我通过Intent使用标准摄像头拍摄图像:

打开摄像头:

 val takePicture = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
        if (takePicture.resolveActivity(packageManager) != null) {
            startActivityForResult(takePicture, TAKE_PICTURE)
        }

相机自动定焦拍照

结果显示在ImageView上

如果我使用相机2 API在:git:https://github.com/googlesamples/android-Camera2Basic图像的结果不显示肖像

摄像机2预览

结果显示在ImageView上

我的代码显示图像:

val bitmap = BitmapFactory.decodeFile(file.toString())
  imagePreview.setImageBitmap(bitmap)
                        }

如何设置Camera2 API以显示相同标准摄像头的结果?

共有1个答案

钦枫
2023-03-14

在相机2Basic示例中,ImageSaver不会根据设备方向旋转捕获的JPEG。相反,相机2BasicFragment.captureStillPicture()设置捕获请求。JPEG_ORIENTATION,这只是相机固件的建议。

相机设备可以将该值编码到JPEG EXIF头中,或者旋转图像数据以匹配该方向。旋转图像数据时,缩略图数据也将旋转。

大多数情况下,此建议仅设置标头,但有些设备甚至忽略了标头。请参阅最近关于此功能及其可靠性的文章。

请注意,并非所有的查看器软件都遵守EXIF方向标记,因此,常用相机应用程序通常会将实际JPEG旋转为默认方向。

将捕获的图片加载到ImageView的代码当前会忽略此标记。您可以使用ExifInterface。getAttributeInt(标记方向)从文件或输入流中提取方向。或者,如果您捕获图像并立即显示,您可以直接从传感器获取设备方向。现在是时候决定相机是将图像存储为纵向(即宽度小于高度)还是横向,在这种情况下,您有责任旋转图像进行显示。不要按照此方向旋转位图。相反,您可以调用imagePreview。设置ImageMatrix()以正确显示图像。

顺便说一句,如果只需要将JPEG解码到ImageView,请不要将其解码为内存中的全尺寸位图:这可能会消耗太多内存。最简单的方法是调用setImageURI()。

 类似资料:
  • 标准设置 建立经由基地台与网络联机的网络设定,并保存至PSP™主机。最多可保存10组设定。 网络的设定方法会因您使用之环境而异。以下仅说明标准的设定范例。 1. 确认无线基地台的设定是否已经完成。 确认在PSP™主机的附近,是否设置了已与网络联机的无线基地台。无线基地台的设定通常需使用计算机进行。详情请询问设置无线基地台的人员。 2. 进入(设定)后,选择(网络设定)。 3. 选择[Infrast

  • 我已经安装了运动mmal覆盆子派和它的录制视频,每当我运行开始运动脚本: 然而,它会连续播放视频,直到我停止运动。 我想每10分钟拍一段5分钟的视频。我尝试了超时命令: 我能够运行脚本后,每1小时使用以下代码: 如何在每隔10分钟后运行此脚本?

  • 我有一个扩展JDesktopPane的类,其中有一个JInternalFrame,我可以将其图标化,我非常喜欢这个,但是当我将其图标化时,它会转到屏幕的左侧底部。我想将其更改为屏幕的右侧顶部。有人对如何设置该位置有任何建议吗?

  • 本教程中,我们将介绍一些摄像机的高级设置方法。 添加摄像机事件的语法 下面的代码中,通过 on() 方法添加事件。 app.on(THING.EventType.name, function (ev) { }); 其中,name 为 camera 事件的名称。 关于 camera 相关事件类型,可以点击查看 EventType。 摄像机相关事件示例 可以通过以下脚本对摄像机添加相关事件,可以按

  • 问题内容: 在iOS 10发布之前,我使用以下代码获取录像机的视频和音频捕获: 当iOS 10最终问世时,我在运行代码时收到以下警告。请注意,我的录像机仍可以正常运行约2周。 在iOS 10.0中不建议使用“ devices()”:请改用AVCaptureDeviceDiscoverySession。 今天早上运行代码时,录像机停止工作。xCode8没有给我任何错误,但是相机捕获的PreviewL