android 图片拍照,图片拍摄  |  Android 开发者  |  Android Developers

图片拍摄用例旨在拍摄高分辨率的优质照片,不仅提供简单的相机手动控制功能,还提供自动白平衡、自动曝光和自动对焦 (3A) 功能。调用方负责决定如何使用拍摄的照片,具体包括以下选项:

运行 ImageCapture 的可自定义执行程序有两种类型:回调执行程序和 IO 执行程序。

回调执行程序是 takePicture 方法的参数。它用于执行用户提供的 OnImageCapturedCallback()。

如果调用方选择将图片保存到文件位置,您可以指定执行程序以执行 IO。如需设置 IO 执行程序,请调用 ImageCapture.Builder.setIoExecutor(Executor)。如果执行程序不存在,则默认 CameraX 为任务的内部 IO 执行程序。

实现

提供了拍照所需的基本控制功能。照片是使用闪光灯选项和连续自动对焦拍摄的。

以下代码示例展示了如何配置应用以拍摄照片:

Kotlin

val imageCapture = ImageCapture.Builder()

.setTargetRotation(view.display.rotation)

.build()

cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, imageCapture,

imageAnalysis, preview)Java

ImageCapture imageCapture =

new ImageCapture.Builder()

.setTargetRotation(view.getDisplay().getRotation())

.build();

cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, imageCapture, imageAnalysis, preview);

配置好相机后,以下代码会根据用户操作拍照:

Kotlin

fun onClick() {

val outputFileOptions = ImageCapture.OutputFileOptions.Builder(File(...)).build()

imageCapture.takePicture(outputFileOptions, cameraExecutor,

object : ImageCapture.OnImageSavedCallback {

override fun onError(error: ImageCaptureException)

{

// insert your code here.

}

override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) {

// insert your code here.

}

})

}Java

public void onClick() {

ImageCapture.OutputFileOptions outputFileOptions =

new ImageCapture.OutputFileOptions.Builder(new File(...)).build();

imageCapture.takePicture(outputFileOptions, cameraExecutor,

new ImageCapture.OnImageSavedCallback() {

@Override

public void onImageSaved(ImageCapture.OutputFileResults outputFileResults) {

// insert your code here.

}

@Override

public void onError(ImageCaptureException error) {

// insert your code here.

}

}

);

}

图片拍摄方法完全支持 JPEG 格式。如需查看有关如何将 Media.Image 对象从 YUV_420_888 格式转换为 RGB Bitmap对象的示例代码,请参阅 YuvToRgbConverter.kt。

其他资源

要详细了解 CameraX,请参阅下面列出的其他资源。

Codelab

代码示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值