Interface (ColorManagement)
ColorManagement继承自ColorManagementQuery。
色彩管理类,用于设置色彩空间参数。
说明:
- 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
- 本Interface首批接口从API version 12开始支持。
导入模块
import { camera } from '@kit.CameraKit';
setColorSpace12+
setColorSpace(colorSpace: colorSpaceManager.ColorSpace): void
设置色彩空间。
使用该接口前,必须先通过getSupportedColorSpaces获取当前设备所支持的ColorSpaces。该接口建议在addOutput之后、commitConfig之前调用,如果在commitConfig之后调用该接口,会导致相机会话配置耗时增加。
P3广色域与HDR高动态范围成像:
应用可以下发不同的色彩空间(ColorSpace)参数来支持P3广色域以及HDR的功能。若应用不主动设置色彩空间,拍照、录像模式均默认为SDR拍摄。
应用针对不同模式使能HDR效果、设置的色彩空间以及设置相机输出流Profile中的CameraFormat一一对应关系可参考下表。例如,在录像模式下若需要选择HDR拍摄,相机预览输出流和录像输出流Profile中的CameraFormat可选择CAMERA_FORMAT_YCRCB_P010,色彩空间ColorSpace可选择设置BT2020_HLG_LIMIT。
在拍照模式下,若需要获取HDR高显效果的图片,可通过设置色彩空间(ColorSpace)为DISPLAY_P3或BT2020_HLG实现。其中BT2020_HLG能够表示更广的色域,需要搭配使用预览输出格式(Profile.format)P010(CAMERA_FORMAT_YCRCB_P010/CAMERA_FORMAT_YCBCR_P010)来提升图像质感。
从API version 23开始,可以通过接口getSupportedFullOutputCapability查询是否支持拍照模式下的预览P010格式。
- 若应用不主动设置色彩空间,在拍照模式下,当预览输出格式为CAMERA_FORMAT_YUV_420_SP时,色彩空间默认为SRGB;当预览输出格式为CAMERA_FORMAT_YCRCB_P010/CAMERA_FORMAT_YCBCR_P010时,色彩空间默认为BT2020_HLG。
- 若应用主动设置色彩空间,在拍照模式下,预览输出格式与色彩空间必须按照下列表格中的对应关系配置,若不满足则会在setColorSpace或commitConfig时返回错误码。
拍照模式:
| SDR/HDR拍摄 | 预览输出格式 | 色彩空间 |
|---|---|---|
| SDR(Default) | CAMERA_FORMAT_YUV_420_SP | SRGB |
| HDR P3 | CAMERA_FORMAT_YUV_420_SP | DISPLAY_P3 |
| HDR BT.2020 | CAMERA_FORMAT_YCRCB_P010、 CAMERA_FORMAT_YCBCR_P010 |
BT2020_HLG |
在录像模式下,使能SDR或HDR_VIVID拍摄效果时,CameraFormat与ColorSpace必须按照下列表格中的对应关系配置,若不满足表格中CameraFormat与ColorSpace配置,会导致预览异常等问题。
录像模式:
| SDR/HDR拍摄 | CameraFormat | ColorSpace |
|---|---|---|
| SDR(Default) | CAMERA_FORMAT_YUV_420_SP | BT709_LIMIT |
| HDR_VIVID | CAMERA_FORMAT_YCRCB_P010 | BT2020_HLG_LIMIT、 BT2020_HLG |
| HDR_VIVID | CAMERA_FORMAT_YCBCR_P010 | BT2020_HLG_LIMIT、 BT2020_HLG |
原子化服务API: 从API version 19开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.Multimedia.Camera.Core
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| colorSpace | colorSpaceManager.ColorSpace | 是 | 色彩空间,通过getSupportedColorSpaces接口获取。 |
错误码:
以下错误码的详细介绍请参见Camera错误码。
| 错误码ID | 错误信息 |
|---|---|
| 7400101 | Parameter missing or parameter type incorrect. |
| 7400102 | The colorSpace does not match the format. |
| 7400103 | Session not config. |
| 7400201 | Camera service fatal error. |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
import { colorSpaceManager } from '@kit.ArkGraphics2D';
function setColorSpace(session: camera.PhotoSession, colorSpaces: Array<colorSpaceManager.ColorSpace>): void {
if (colorSpaces === undefined || colorSpaces.length <= 0) {
return;
}
try {
session.setColorSpace(colorSpaces[0]);
} catch (error) {
let err = error as BusinessError;
console.error(`The setColorSpace call failed, error code: ${err.code}`);
}
}
getActiveColorSpace12+
getActiveColorSpace(): colorSpaceManager.ColorSpace
获取当前设置的色彩空间。
原子化服务API: 从API version 19开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.Multimedia.Camera.Core
返回值:
| 类型 | 说明 |
|---|---|
| colorSpaceManager.ColorSpace | 当前设置的色彩空间。 |
错误码:
以下错误码的详细介绍请参见Camera错误码。
| 错误码ID | 错误信息 |
|---|---|
| 7400103 | Session not config. |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
import { colorSpaceManager } from '@kit.ArkGraphics2D';
function getActiveColorSpace(session: camera.PhotoSession): colorSpaceManager.ColorSpace | undefined {
let colorSpace: colorSpaceManager.ColorSpace | undefined = undefined;
try {
colorSpace = session.getActiveColorSpace();
} catch (error) {
let err = error as BusinessError;
console.error(`The getActiveColorSpace call failed. error code: ${err.code}`);
}
return colorSpace;
}