我发现的与新的 Ultra-HDR (JPEG_R) 格式相关的唯一代码是:https://github.com/google/libultrahdr/blob/main/examples/ultrahdr_app.cpp
据我所知,这是一个通用/桌面的东西,不能直接适用于android。
我正在使用 Camera2Raw 示例的修改版本,当我尝试设置 JPEG_R
ImageReader
时,我只是收到“配置失败”错误。我的手机是 Pixel 6 Pro,它可以使用官方相机应用程序保存超 HDR 图像。即使 ImageReader
成功配置,我仍然需要正确保存 JPEG_R。例如,以下是保存普通 JPEG 和 DNG 的代码:
switch (format) {
case ImageFormat.JPEG: {
ByteBuffer buffer = mImage.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.remaining()];
buffer.get(bytes);
FileOutputStream output = null;
try {
output = new FileOutputStream(mFile);
output.write(bytes);
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
mImage.close();
closeOutput(output);
}
break;
}
case ImageFormat.RAW_SENSOR: {
DngCreator dngCreator = new DngCreator(mCharacteristics, mCaptureResult);
FileOutputStream output = null;
try {
output = new FileOutputStream(mFile);
dngCreator.writeImage(output, mImage);
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
mImage.close();
closeOutput(output);
}
break;
}
case ImageFormat.JPEG_R
会是什么样子?如果真的很复杂,那就这样吧。但我只是想确保没有一些我不知道的简单方法可以做到这一点。该格式仍然很新,所以也许这只是等待有人做出一个好的示例实现的问题。
首先您需要检查设备是否支持UltraHDR拍摄。 你可以参考这个方法。 https://github.com/android/platform-samples/blob/main/samples/camera/camera2/src/main/java/com/example/platform/camera/imagecapture/Camera2UltraHDRCapture.kt#L363
图像保存将与JPEG格式相同。