我正在创建一个应用程序,该应用程序以.dng格式拍摄图片以对其进行处理。 我正在使用camera2 API。 我可以拍照并将其保存到手机中,但格式为.jpg。 但是,当我更改代码以使用.dng扩展名保存它们时,它会编译并在手机上显示预览,但是在拍摄照片时出现错误。 我的代码拍摄并保存图片的部分如下。

val reader = ImageReader.newInstance(1280, 720, ImageFormat.RAW_SENSOR, 1)

val outputSurfaces = ArrayList(2)

outputSurfaces.add(reader.surface)

outputSurfaces.add(Surface(previewTextureView.surfaceTexture))

val captureBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE)

captureBuilder.addTarget(reader.surface)

captureBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO)

val file = File("myPath/myImageName.dng")

var captureResult: CaptureResult? = null

和我的听众:

val readerListener = object : ImageReader.OnImageAvailableListener {

override fun onImageAvailable(reader: ImageReader) {

var image: Image? = null

var output: OutputStream? = null

val dngCreator = DngCreator(cameraManager.getCameraCharacteristics("0"), captureResult)

try {

image = reader.acquireLatestImage()

output = FileOutputStream(file)

dngCreator.writeImage(output, image)

} catch (e: FileNotFoundException) {

e.printStackTrace()

} catch (e: IOException) {

e.printStackTrace()

} finally {

output?.close()

image?.close()

}

}

}

reader.setOnImageAvailableListener(readerListener, backgroundHandler)

val captureListener = object : CameraCaptureSession.CaptureCallback() {

override fun onCaptureCompleted(session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult) {

captureResult = result

super.onCaptureCompleted(session, request, result)

}

}

最后,我使用以下命令捕获了会话:

cameraDevice.createCaptureSession(outputSurfaces, object : CameraCaptureSession.StateCallback() {

override fun onConfigured(session: CameraCaptureSession) {

try {

session.capture(captureBuilder.build(), captureListener, backgroundHandler)

} catch (e: CameraAccessException) {

e.printStackTrace()

}

}

override fun onConfigureFailed(session: CameraCaptureSession) {}

}, backgroundHandler)

将图像另存为jpeg时,我遇到了一个以前没有的警告和一个错误:

W/CameraDevice-JV-0: Stream configuration failed due to: createSurfaceFromGbp:1106: Camera 0: No supported stream configurations with format 0x20 defined, failed to create output stream

E/CameraCaptureSession: Session 1: Failed to create capture session; configuration failed

为了保存dng文件,我进行了以下更改:

我将ImageFormat.JPEG替换为ImageFormat.RAW_SENSOR

我将文件扩展名从.jpg更改为.dng

我没有使用dngCreator.writeImage(output, image) ,而是使用了:

val buffer = image!!.planes[0].buffer

val bytes = ByteArray(buffer.capacity())

buffer.get(bytes)

output.write()

由于没有太多有关此主题的信息,因此我不确定我的实现是否正确。

android dng图片,android - 使用Camera2 API拍摄dng图片 - 堆栈内存溢出相关推荐

  1. android 切换字体崩溃,androidx - 在Android 10 / Android Q上使用捆绑的ttf字体时崩溃 - 堆栈内存溢出...

    将我的Android应用的目标级别从28更新为29(Android 10)后,该应用在Pixel 3(使用Android 10)上崩溃了. 使用的版本 Android Gradle插件3.5.0 摇篮 ...

  2. android 添加意图,c# - Xamarin.Android:如何为每个通知添加唯一的意图 - 堆栈内存溢出...

    我将Intent添加到Android.Support.V4.App.NotificationCompat.Builder但Extras没有传递到OnNewIntent的重写中,并且似乎该参数始终是相同 ...

  3. android surfaceview 大小_Android 使用Camera2 API采集视频数据

    Android 视频数据采集系列的最后一篇出炉了,和前两篇文章想比,这篇文章从系统API层面进行一些探索,涉及到的细节更多.初次接触 Camera2 API 会觉得它的使用有些繁琐,涉及到的类有些多, ...

  4. android 自定义录像机,android-camera2 - 将自定义捕获请求构建器选项设置为使用Camera2 API捕获图像以使用OpenCV库进行摄像机校准 - 堆栈内存溢出...

    我们正在使用Camera2 API捕获N张图像,而未设置任何自定义捕获请求构建器选项. 我们正在使用这些图像通过OpenCV Android库411进行相机校准. 然后,我们正在使用OpenCV An ...

  5. android 电视安装apk文件损坏,android - 无法在Android电视盒上安装APK - 堆栈内存溢出...

    我正在为Android TV编写应用程序. 它可以在模拟器上正常运行,并在Android电视盒上以调试模式运行. 但是,当我使用Android Studio生成apk并尝试将该apk安装在同一盒子上时 ...

  6. android 按钮 叠加,android - 叠加层按钮在Android 4.3中不起作用 - 堆栈内存溢出

    我在WindowManager.LayoutParams.TYPE_TOAST级别层上有一个带按钮的覆盖视图. 该按钮在Android 4.2中可以正常工作,但是当我在Android 4.3中运行相同 ...

  7. android xml png,android - 使用.png文件中的形状创建xml聊天气泡 - 堆栈内存溢出

    请问是否有人知道如何在下面创建聊天气泡的xml形状? 我在网上找到的唯一示例是两个单独的形状,它们在布局中作为两个单独的背景放置-三角形和矩形. 我尝试将三角形和矩形组合在一起无济于事. 三角形似乎隐 ...

  8. android自定义optionmenu,android - 自定义onOptionMenu外观 - 堆栈内存溢出

    我试图使我的OnOptionMenu看起来像这样: 关于如何使其接近的任何想法? 编辑: 这是我所做的: android:id="@+id/item1" android:title ...

  9. android 约束布局的坑,android - 使用android约束布局2.0.0 Flow将项目放置一行 - 堆栈内存溢出...

    我的xml流程布局 android:id="@+id/fr_mail_viewer_attachments_flow" android:layout_width="0dp ...

最新文章

  1. 让用户用最短的时间接受 Confluence
  2. 数据库被挂马的ASP处理方法
  3. 剑英的区块链学习手记(二)
  4. java实现递归层次遍历_Java实现二叉树的前序、中序、后序、层序遍历(递归方法)...
  5. linux版车机安装步骤,RedHat Linux 9.0的安装(详细图解安装过程)
  6. 温度 数值模拟 matlab,西安交通大学——温度场数值模拟(matlab)
  7. python和excell_Python与Excel 不得不说的事情
  8. 显示连接失败_技术丨外接显示器障碍的诊断方法
  9. 串口接收到的浮点数(解码后出现的错误)
  10. 网站在线沟通工具,网站即时聊天工具-TTKEFU在线客服系统功能介绍
  11. MATLAB通信系统建模与仿真
  12. 全能鼠标连点器之自动点击王软件
  13. html邮件格式完整规范,邮件模板css及html设计规范
  14. linux下通过ping命令监控网络抖动脚本
  15. OpenCV画椭圆、实心圆、凹多边形、线段、矩形
  16. 1185_SPC560B60L7_ADC0标准通道的Injected转换模式
  17. 微服务之服务治理相关内容
  18. 大数据之hive:hive分桶表
  19. 忽然看到自己十年前发的关于转计算机专业的帖子,感慨万千
  20. 如何控制滚轮横向滑动(原生JS实现方法)

热门文章

  1. python 招聘 广州_python爬虫 智联招聘 工作地点
  2. c语言实现二进制八进制十进制和十六进制的相互转化
  3. 网络学习day04_VLSM、子网划分
  4. 物理机 群晖 7.0.1编译引导,修改系统文件参数 esataportcfg,internalportcfg,maxdisks
  5. 书摘 2018.8.13
  6. WPF:小功能Loading...正在加载中
  7. 年审是当月还是当天_车辆年审有效期是按月算还是按日
  8. 节奏工作站含拓展 – Native Instruments Maschine 2.10.1 win-mac
  9. 灯具3c认证执行标准包括哪些
  10. Java导出Word文档(可设置字体)