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。
  • 若应用主动设置色彩空间,在拍照模式下,预览输出格式与色彩空间必须按照下列表格中的对应关系配置,若不满足则会在setColorSpacecommitConfig时返回错误码。

拍照模式:

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;
}