diff --git a/zh-cn/native_sdk/media/image/image_common.h b/zh-cn/native_sdk/media/image/image_common.h new file mode 100644 index 0000000000000000000000000000000000000000..dcfd8ddc0d9b7c85eae7037bd682df35493245d8 --- /dev/null +++ b/zh-cn/native_sdk/media/image/image_common.h @@ -0,0 +1,1165 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @addtogroup image + * @{ + * + * @brief 提供图片编解码能力。 + * + * @since 12 + */ + +/** + * @file image_common.h + * + * @brief 声明图像接口使用的公共枚举和结构体。 + * + * @syscap SystemCapability.Multimedia.Image.Core + * @since 12 + */ + +#ifndef INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_IMAGE_COMMON_H_ +#define INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_IMAGE_COMMON_H_ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief 图像大小结构体。 + * + * @since 12 + */ +struct Image_Size { + /** 图片的宽,单位:像素。 */ + uint32_t width; + /** 图片的高,单位:像素。 */ + uint32_t height; +}; + +/** + * @brief 声明图像大小结构。 + * + * @since 12 + */ +typedef struct Image_Size Image_Size; + +/** + * @brief 待解码的图像源区域结构体。 + * + * @since 12 + */ +struct Image_Region { + /** 区域横坐标,不能大于原图的宽度。 */ + uint32_t x; + /** 区域纵坐标,不能大于原图的高度。 */ + uint32_t y; + /** 输出图片的宽,单位:像素。*/ + uint32_t width; + /** 输出图片的高,单位:像素。*/ + uint32_t height; +}; + +/** + * @brief 声明要解码的图像源区域结构体类型名称。 + * + * @since 12 + */ +typedef struct Image_Region Image_Region; + +/** + * @brief 字符串结构。 + * + * @since 12 + */ +struct Image_String { + /** 字符类型数据。 */ + char *data = nullptr; + /** 数据长度。 */ + size_t size = 0; +}; + +/** + * @brief 声明字符串结构的名称。 + * + * @since 12 + */ +typedef struct Image_String Image_String; + +/** + * @brief 声明一个图片格式类型的名称。 + * + * @since 12 + */ +typedef struct Image_String Image_MimeType; + +/** + * @brief 错误码。 + * + * @since 12 + */ +typedef enum { + /** + * @error 操作成功。 + */ + IMAGE_SUCCESS = 0, + /** + * @error 无效参数。 + */ + IMAGE_BAD_PARAMETER = 401, + /** + * @error 不支持的mime type。 + */ + IMAGE_UNSUPPORTED_MIME_TYPE = 7600101, + /** + * @error 未知的mime type。 + */ + IMAGE_UNKNOWN_MIME_TYPE = 7600102, + /** + * @error 过大的数据或图片。 + */ + IMAGE_TOO_LARGE = 7600103, + /** + * @error 不支持的操作。 + */ + IMAGE_UNSUPPORTED_OPERATION = 7600201, + /** + * @error 不支持的 metadata。 + */ + IMAGE_UNSUPPORTED_METADATA = 7600202, + /** + * @error 不支持的转换。 + */ + IMAGE_UNSUPPORTED_CONVERSION = 7600203, + /** + * @error 无效区域。 + */ + IMAGE_INVALID_REGION = 7600204, + /** + * @error 申请内存失败。 + */ + IMAGE_ALLOC_FAILED = 7600301, + /** + * @error 内存拷贝失败。 + */ + IMAGE_COPY_FAILED = 7600302, + /** + * @error 未知错误。 + */ + IMAGE_UNKNOWN_ERROR = 7600901, + /** + * @error 解码数据源异常。 + */ + IMAGE_BAD_SOURCE = 7700101, + /** + * @error 解码失败。 + */ + IMAGE_DECODE_FAILED = 7700301, + /** + * @error 编码失败。 + */ + IMAGE_ENCODE_FAILED = 7800301, +} Image_ErrorCode; + +/** + * @brief bmp图片格式。 + * + * @since 12 + */ +static const char* MIME_TYPE_BMP = "image/bmp"; + +/** + * @brief jpeg图片格式。 + * + * @since 12 + */ +static const char* MIME_TYPE_JPEG = "image/jpeg"; + +/** + * @brief heif图片格式。 + * + * @since 12 + */ +static const char* MIME_TYPE_HEIC = "image/heic"; + +/** + * @brief png图片格式。 + * + * @since 12 + */ +static const char* MIME_TYPE_PNG = "image/png"; + +/** + * @brief webp图片格式。 + * + * @since 12 + */ +static const char* MIME_TYPE_WEBP = "image/webp"; + +/** + * @brief gif图片格式。 + * + * @since 12 + */ +static const char* MIME_TYPE_GIF = "image/gif"; + +/** + * @brief ico图片格式。 + * + * @since 12 + */ +static const char* MIME_TYPE_ICON = "image/x-icon"; + +/** + * @brief 每个像素比特数。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_BITS_PER_SAMPLE = "BitsPerSample"; + +/** + * @brief 图片方向。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_ORIENTATION = "Orientation"; + +/** + * @brief 图片长度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_IMAGE_LENGTH = "ImageLength"; + +/** + * @brief 图片宽度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_IMAGE_WIDTH = "ImageWidth"; + +/** + * @brief 图片纬度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_LATITUDE = "GPSLatitude"; + +/** + * @brief 图片经度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_LONGITUDE = "GPSLongitude"; + +/** + * @brief 纬度引用,例如N或S。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_LATITUDE_REF = "GPSLatitudeRef"; + +/** + * @brief 经度引用,例如W或E。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_LONGITUDE_REF = "GPSLongitudeRef"; + +/** + * @brief 拍摄时间,例如2022:09:06 15:48:00。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_DATE_TIME_ORIGINAL = "DateTimeOriginal"; + +/** + * @brief 曝光时间,例如1/33 sec。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_EXPOSURE_TIME = "ExposureTime"; + +/** + * @brief 拍摄场景模式,例如人像、风光、运动、夜景等。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SCENE_TYPE = "SceneType"; + +/** + * @brief ISO感光度,例如400。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_ISO_SPEED_RATINGS = "ISOSpeedRatings"; + +/** + * @brief 光圈值,例如f/1.8。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_F_NUMBER = "FNumber"; + +/** + * @brief 用于压缩图像的压缩模式,单位为每像素位数。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_COMPRESSED_BITS_PER_PIXEL = "CompressedBitsPerPixel"; + +/** + * @brief 图像压缩方案。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_COMPRESSION = "Compression"; + +/** + * @brief 像素构成,例如RGB或YCbCr。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_PHOTOMETRIC_INTERPRETATION = "PhotometricInterpretation"; + +/** + * @brief 每个strip的字节偏移量。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_STRIP_OFFSETS = "StripOffsets"; + +/** + * @brief 每个像素的分量数。由于该标准适用于 RGB 和 YCbCr 图像,因此该标签的值设置为 3。 + * 在JPEG压缩数据中,使用JPEG标记代替该标签。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SAMPLES_PER_PIXEL = "SamplesPerPixel"; + +/** + * @brief 每个strip的图像数据行数。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_ROWS_PER_STRIP = "RowsPerStrip"; + +/** + * @brief 每个图像数据带的总字节数。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_STRIP_BYTE_COUNTS = "StripByteCounts"; + +/** + * @brief 图像宽度方向的分辨率。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_X_RESOLUTION = "XResolution"; + +/** + * @brief 图像高度方向的分辨率。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_Y_RESOLUTION = "YResolution"; + +/** + * @brief 表示像素组件的记录格式,chunky格式或是planar格式。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_PLANAR_CONFIGURATION = "PlanarConfiguration"; + +/** + * @brief 用于测量XResolution和YResolution的单位。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_RESOLUTION_UNIT = "ResolutionUnit"; + +/** + * @brief 图像的传递函数,通常用于颜色校正。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_TRANSFER_FUNCTION = "TransferFunction"; + +/** + * @brief 用于生成图像的软件的名称和版本。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SOFTWARE = "Software"; + +/** + * @brief 创建图像的用户名称。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_ARTIST = "Artist"; + +/** + * @brief 图像的白点色度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_WHITE_POINT = "WhitePoint"; + +/** + * @brief 图像的主要颜色的色度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_PRIMARY_CHROMATICITIES = "PrimaryChromaticities"; + +/** + * @brief 从RGB到YCbCr图像数据的转换矩阵系数。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_YCBCR_COEFFICIENTS = "YCbCrCoefficients"; + +/** + * @brief 色度分量与亮度分量的采样比率。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_YCBCR_SUB_SAMPLING = "YCbCrSubSampling"; + +/** + * @brief 色度分量相对于亮度分量的位置。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_YCBCR_POSITIONING = "YCbCrPositioning"; + +/** + * @brief 参考黑点值和参考白点值。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_REFERENCE_BLACK_WHITE = "ReferenceBlackWhite"; + +/** + * @brief 图像的版权信息。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_COPYRIGHT = "Copyright"; + +/** + * @brief JPEG压缩缩略图数据开始字节(SOI)的偏移。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_JPEG_INTERCHANGE_FORMAT = "JPEGInterchangeFormat"; + +/** + * @brief JPEG压缩缩略图数据的字节数。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_JPEG_INTERCHANGE_FORMAT_LENGTH = "JPEGInterchangeFormatLength"; + +/** + * @brief 拍照时相机用来设置曝光的程序的类别。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_EXPOSURE_PROGRAM = "ExposureProgram"; + +/** + * @brief 表示所用相机的每个通道的光谱灵敏度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SPECTRAL_SENSITIVITY = "SpectralSensitivity"; + +/** + * @brief 表示ISO 14524中规定的光电转换函数(OECF)。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_OECF = "OECF"; + +/** + * @brief 支持的Exif标准版本。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_EXIF_VERSION = "ExifVersion"; + +/** + * @brief 图像作为数字数据存储的日期和时间,格式为YYYY:MM:DD HH:MM:SS。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_DATE_TIME_DIGITIZED = "DateTimeDigitized"; + +/** + * @brief 压缩数据的特定信息。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_COMPONENTS_CONFIGURATION = "ComponentsConfiguration"; + +/** + * @brief 快门速度,以APEX(摄影曝光的加法系统)值表示。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SHUTTER_SPEED_VALUE = "ShutterSpeedValue"; + +/** + * @brief 图像的亮度值,以APEX单位表示。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_BRIGHTNESS_VALUE = "BrightnessValue"; + +/** + * @brief 最小F数镜头。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_MAX_APERTURE_VALUE = "MaxApertureValue"; + +/** + * @brief 测量单位为米的主体距离。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SUBJECT_DISTANCE = "SubjectDistance"; + +/** + * @brief 该标签指示整个场景中主要主体的位置和区域。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SUBJECT_AREA = "SubjectArea"; + +/** + * @brief Exif/DCF制造商使用的标签,用于记录任何所需信息。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_MAKER_NOTE = "MakerNote"; + +/** + * @brief 用于为DateTime标签记录秒的分数的标签。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SUBSEC_TIME = "SubsecTime"; + +/** + * @brief 用于为DateTimeOriginal标签记录秒的分数的标签。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SUBSEC_TIME_ORIGINAL = "SubsecTimeOriginal"; + +/** + * @brief 用于为DateTimeDigitized标签记录秒的分数的标签。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SUBSEC_TIME_DIGITIZED = "SubsecTimeDigitized"; + +/** + * @brief 该标签表示FPXR文件支持的Flashpix格式版本,增强了设备兼容性。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FLASHPIX_VERSION = "FlashpixVersion"; + +/** + * @brief 色彩空间信息标签,通常记录为色彩空间指定符。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_COLOR_SPACE = "ColorSpace"; + +/** + * @brief 与图像数据相关的音频文件的名称。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_RELATED_SOUND_FILE = "RelatedSoundFile"; + +/** + * @brief 图像捕获时的闪光能量,以BCPS表示。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FLASH_ENERGY = "FlashEnergy"; + +/** + * @brief 相机或输入设备的空间频率表。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SPATIAL_FREQUENCY_RESPONSE = "SpatialFrequencyResponse"; + +/** + * @brief 图像宽度中每FocalPlaneResolutionUnit的像素。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FOCAL_PLANE_X_RESOLUTION = "FocalPlaneXResolution"; + +/** + * @brief 图像高度中每FocalPlaneResolutionUnit的像素。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FOCAL_PLANE_Y_RESOLUTION = "FocalPlaneYResolution"; + +/** + * @brief 测量FocalPlaneXResolution和FocalPlaneYResolution的单位。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FOCAL_PLANE_RESOLUTION_UNIT = "FocalPlaneResolutionUnit"; + +/** + * @brief 主要对象相对于左边缘的位置。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SUBJECT_LOCATION = "SubjectLocation"; + +/** + * @brief 捕获时选定的曝光指数。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_EXPOSURE_INDEX = "ExposureIndex"; + +/** + * @brief 相机上的图像传感器类型。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SENSING_METHOD = "SensingMethod"; + +/** + * @brief 表明图像来源。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FILE_SOURCE = "FileSource"; + +/** + * @brief 图像传感器的色彩滤光片(CFA)几何图案。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_CFA_PATTERN = "CFAPattern"; + +/** + * @brief 指示图像数据上的特殊处理。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_CUSTOM_RENDERED = "CustomRendered"; + +/** + * @brief 拍摄时设置的曝光模式。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_EXPOSURE_MODE = "ExposureMode"; + +/** + * @brief 捕获时的数字变焦比率。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_DIGITAL_ZOOM_RATIO = "DigitalZoomRatio"; + +/** + * @brief 捕获的场景类型。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SCENE_CAPTURE_TYPE = "SceneCaptureType"; + +/** + * @brief 整体图像增益调整的程度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GAIN_CONTROL = "GainControl"; + +/** + * @brief 相机应用的对比度处理方向。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_CONTRAST = "Contrast"; + +/** + * @brief 相机应用的饱和度处理方向。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SATURATION = "Saturation"; + +/** + * @brief 相机应用的锐度处理方向。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SHARPNESS = "Sharpness"; + +/** + * @brief 特定相机模型的拍照条件信息。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_DEVICE_SETTING_DESCRIPTION = "DeviceSettingDescription"; + +/** + * @brief 表示主体到相机的距离范围。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SUBJECT_DISTANCE_RANGE = "SubjectDistanceRange"; + +/** + * @brief 为每张图片唯一分配的标识符。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_IMAGE_UNIQUE_ID = "ImageUniqueID"; + +/** + * @brief GPSInfoIFD的版本。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_VERSION_ID = "GPSVersionID"; + +/** + * @brief 用于GPS高度的参照高度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_ALTITUDE_REF = "GPSAltitudeRef"; + +/** + * @brief 基于GPSAltitudeRef的高度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_ALTITUDE = "GPSAltitude"; + +/** + * @brief 用于测量的GPS卫星。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_SATELLITES = "GPSSatellites"; + +/** + * @brief 录制图像时GPS接收器的状态。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_STATUS = "GPSStatus"; + +/** + * @brief GPS测量模式。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_MEASURE_MODE = "GPSMeasureMode"; + +/** + * @brief GPS DOP(数据精度等级)。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_DOP = "GPSDOP"; + +/** + * @brief 用来表示GPS接收器移动速度的单位。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_SPEED_REF = "GPSSpeedRef"; + +/** + * @brief GPS接收器的移动速度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_SPEED = "GPSSpeed"; + +/** + * @brief GPS接收机移动方向的参照。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_TRACK_REF = "GPSTrackRef"; + +/** + * @brief GPS接收机的移动方向。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_TRACK = "GPSTrack"; + +/** + * @brief 图像方向的参照。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_IMG_DIRECTION_REF = "GPSImgDirectionRef"; + +/** + * @brief 拍摄时图像的方向。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_IMG_DIRECTION = "GPSImgDirection"; + +/** + * @brief GPS接收器使用的大地测量数据。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_MAP_DATUM = "GPSMapDatum"; + +/** + * @brief 目的地点的纬度参照。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_DEST_LATITUDE_REF = "GPSDestLatitudeRef"; + +/** + * @brief 目的地点的纬度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_DEST_LATITUDE = "GPSDestLatitude"; + +/** + * @brief 目的地点的经度参照。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_DEST_LONGITUDE_REF = "GPSDestLongitudeRef"; + +/** + * @brief 记录定位方法名的字符字符串。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_PROCESSING_METHOD = "GPSProcessingMethod"; + +/** + * @brief 记录GPS区域名的字符字符串。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_AREA_INFORMATION = "GPSAreaInformation"; + +/** + * @brief 此字段表示GPS数据是否应用了差分校正,对于精确的位置准确性至关重要。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_DIFFERENTIAL = "GPSDifferential"; + +/** + * @brief 相机机身的序列号。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_BODY_SERIAL_NUMBER = "BodySerialNumber"; + +/** + * @brief 相机所有者的姓名。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_CAMERA_OWNER_NAME = "CameraOwnerName"; + +/** + * @brief 表示图像是否为合成图像。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_COMPOSITE_IMAGE = "CompositeImage"; + +/** + * @brief DNG版本标签编码了符合DNG规范的四级版本号。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_DNG_VERSION = "DNGVersion"; + +/** + * @brief 目的地点的经度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_DEST_LONGITUDE = "GPSDestLongitude"; + +/** + * @brief 指向目的地点的方位参照。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_DEST_BEARING_REF = "GPSDestBearingRef"; + +/** + * @brief 目的地方位。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_DEST_BEARING = "GPSDestBearing"; + +/** + * @brief 目标点距离的测量单位。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_DEST_DISTANCE_REF = "GPSDestDistanceRef"; + +/** + * @brief 到目的地点的距离。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_DEST_DISTANCE = "GPSDestDistance"; + +/** + * @brief DefaultCropSize指定了原始坐标中的最终图像大小,考虑了额外的边缘像素。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_DEFAULT_CROP_SIZE = "DefaultCropSize"; + +/** + * @brief 表示系数伽马的值。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GAMMA = "Gamma"; + +/** + * @brief 该标签指示摄像机或输入设备的ISO速度纬度yyy值,该值在ISO 12232中定义。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_ISO_SPEED_LATITUDEYYY = "ISOSpeedLatitudeyyy"; + +/** + * @brief 该标签指示摄像机或输入设备的ISO速度纬度zzz值,该值在ISO 12232中定义。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_ISO_SPEED_LATITUDEZZZ = "ISOSpeedLatitudezzz"; + +/** + * @brief 镜头的制造商。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_LENS_MAKE = "LensMake"; + +/** + * @brief 镜头的型号名称。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_LENS_MODEL = "LensModel"; + +/** + * @brief 镜头的序列号。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_LENS_SERIAL_NUMBER = "LensSerialNumber"; + +/** + * @brief 使用的镜头规格。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_LENS_SPECIFICATION = "LensSpecification"; + +/** + * @brief 在Exif中,"NewSubfileType"字段用于标识子文件的数据类型,如全分辨率图像、缩略图或多帧图像的一部分。 + * 其值是位掩码,0代表全分辨率图像,1代表缩略图,2代表多帧图像的一部分。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_NEW_SUBFILE_TYPE = "NewSubfileType"; + +/** + * @brief 在Exif中,OffsetTime字段表示与UTC(协调世界时)的时间偏移,格式为±HH:MM,用于确定照片拍摄的本地时间。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_OFFSET_TIME = "OffsetTime"; + +/** + * @brief 此标签记录图像数字化时的UTC偏移量,有助于准确调整时间戳。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_OFFSET_TIME_DIGITIZED = "OffsetTimeDigitized"; + +/** + * @brief 此标签记录原始图像创建时的UTC偏移量,对于时间敏感的应用至关重要。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_OFFSET_TIME_ORIGINAL = "OffsetTimeOriginal"; + +/** + * @brief 合成图像的源图像曝光时间。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SOURCE_EXPOSURE_TIMES_OF_COMPOSITE_IMAGE = "SourceExposureTimesOfCompositeImage"; + +/** + * @brief 用于合成图像的源图像数量。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SOURCE_IMAGE_NUMBER_OF_COMPOSITE_IMAGE = "SourceImageNumberOfCompositeImage"; + +/** + * @brief 此标签指示此子文件中的数据类型。标签已弃用,请使用NewSubfileType替代。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SUBFILE_TYPE = "SubfileType"; + +/** + * @brief 此标签指示水平定位误差,单位为米。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_GPS_H_POSITIONING_ERROR = "GPSHPositioningError"; + +/** + * @brief 此标签指示拍摄图像时相机或输入设备的灵敏度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_PHOTOGRAPHIC_SENSITIVITY = "PhotographicSensitivity"; + +/** + * @brief 连拍次数。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_BURST_NUMBER = "HwMnoteBurstNumber"; + +/** + * @brief 人脸置信度。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FACE_CONF = "HwMnoteFaceConf"; + +/** + * @brief 左眼中心。被用于 {@link OH_ImageSource_GetImageProperty} 和 {@link OH_ImageSource_ModifyImageProperty}。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FACE_LEYE_CENTER = "HwMnoteFaceLeyeCenter"; + +/** + * @brief 嘴中心。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FACE_MOUTH_CENTER = "HwMnoteFaceMouthCenter"; + +/** + * @brief 脸部指针。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FACE_POINTER = "HwMnoteFacePointer"; + +/** + * @brief 脸部矩形。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FACE_RECT = "HwMnoteFaceRect"; + +/** + * @brief 右眼中心。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FACE_REYE_CENTER = "HwMnoteFaceReyeCenter"; + +/** + * @brief FaceCount张人脸的笑脸分数。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FACE_SMILE_SCORE = "HwMnoteFaceSmileScore"; + +/** + * @brief 人脸算法版本信息。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FACE_VERSION = "HwMnoteFaceVersion"; + +/** + * @brief 是否是前置相机自拍。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_FRONT_CAMERA = "HwMnoteFrontCamera"; + +/** + * @brief 场景指针。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SCENE_POINTER = "HwMnoteScenePointer"; + +/** + * @brief 场景算法版本信息。 + * + * @since 12 + */ +static const char *OHOS_IMAGE_PROPERTY_SCENE_VERSION = "HwMnoteSceneVersion"; +#ifdef __cplusplus +}; +#endif +/** @} */ + +#endif // INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_IMAGE_COMMON_H_ \ No newline at end of file diff --git a/zh-cn/native_sdk/media/image/image_packer_native.h b/zh-cn/native_sdk/media/image/image_packer_native.h new file mode 100644 index 0000000000000000000000000000000000000000..8f239d8437353baefcf7dcff4dd89acf703f6bb8 --- /dev/null +++ b/zh-cn/native_sdk/media/image/image_packer_native.h @@ -0,0 +1,217 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @addtogroup image + * @{ + * + * @brief 提供图片编解码能力。 + * + * @since 12 + */ + +/** + * @file image_packer_native.h + * + * @brief 图片编码API。 + * + * @library libimage_packer.so + * @syscap SystemCapability.Multimedia.Image.ImagePacker + * @since 12 + */ + +#ifndef INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_IMAGE_PACKER_NATIVE_H_ +#define INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_IMAGE_PACKER_NATIVE_H_ +#include "image_common.h" +#include "image_source_native.h" +#include "pixelmap_native.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief ImagePacker结构体类型,用于执行ImagePacker相关操作。 + * + * @since 12 + */ +struct OH_ImagePackerNative; +typedef struct OH_ImagePackerNative OH_ImagePackerNative; + +/** + * @brief 图像编码选项。 + * + * @since 12 + */ +struct OH_PackingOptions; +typedef struct OH_PackingOptions OH_PackingOptions; + +/** + * @brief 创建PackingOptions结构体的指针。 + * + * @param options 用于操作的PackingOptions指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PackingOptions_Create(OH_PackingOptions **options); + +/** + * @brief 获取mime type。 + * + * @param options 被操作的OH_PackingOptions指针。 + * @param format 图像格式。可传入一个空指针和零大小,系统将分配内存,但必须在使用后释放内存。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PackingOptions_GetMimeType(OH_PackingOptions *options, + Image_MimeType *format); + +/** + * @brief 设置mime type。 + * + * @param options 被操作的OH_PackingOptions指针。 + * @param format 图像格式。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PackingOptions_SetMimeType(OH_PackingOptions *options, + Image_MimeType *format); + +/** + * @brief 获取编码质量。 + * + * @param options 被操作的OH_PackingOptions指针。 + * @param quality 编码质量。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PackingOptions_GetQuality(OH_PackingOptions *options, + uint32_t *quality); + +/** + * @brief 设置编码质量。 + * + * @param options 被操作的OH_PackingOptions指针。 + * @param quality 编码质量。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PackingOptions_SetQuality(OH_PackingOptions *options, + uint32_t quality); + +/** + * @brief 释放OH_PackingOptions指针。 + * + * @param options 被操作的OH_PackingOptions指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PackingOptions_Release(OH_PackingOptions *options); + +/** + * @brief 创建OH_ImagePackerNative指针。 + * + * @param options 被操作的OH_ImagePackerNative指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImagePackerNative_Create(OH_ImagePackerNative **imagePacker); + +/** + * @brief 将ImageSource编码为指定格式的数据。 + * + * @param imagePacker 被操作的OH_ImagePackerNative指针。 + * @param options 打包选项参数 {@link OH_PackingOptions}。 + * @param imageSource 用于编码的image source指针。 + * @param outData 用于存储打包图像输出数据的缓冲区。 + * @param size 用于存储打包图像输出数据的缓冲区大小。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 如果解码失败返回 IMAGE_DECODE_FAILED,如果申请内存失败返回 IMAGE_ALLOC_FAILED, + * 如果数据或图片过大返回 IMAGE_TOO_LARGE,如果未知错误返回 IMAGE_UNKNOWN_ERROR, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImagePackerNative_PackToDataFromImageSource(OH_ImagePackerNative *imagePacker, + OH_PackingOptions *options, OH_ImageSourceNative *imageSource, uint8_t *outData, size_t *size); + +/** + * @brief 将Pixelmap编码为指定格式的数据。 + * + * @param imagePacker 被操作的OH_ImagePackerNative指针。 + * @param options 打包选项参数 {@link OH_PackingOptions}。 + * @param pixelmap 用于编码的Pixelmap指针。 + * @param outData 用于存储打包图像输出数据的缓冲区。 + * @param size 用于存储打包图像输出数据的缓冲区大小。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 如果解码失败返回 IMAGE_DECODE_FAILED,如果申请内存失败返回 IMAGE_ALLOC_FAILED, + * 如果数据或图片过大返回 IMAGE_TOO_LARGE,如果未知错误返回 IMAGE_UNKNOWN_ERROR, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImagePackerNative_PackToDataFromPixelmap(OH_ImagePackerNative *imagePacker, + OH_PackingOptions *options, OH_PixelmapNative *pixelmap, uint8_t *outData, size_t *size); + +/** + * @brief 将一个ImageSource编码到文件中。 + * + * @param imagePacker 被操作的OH_ImagePackerNative指针。 + * @param options 打包选项参数 {@link OH_PackingOptions}。 + * @param imageSource 用于编码的image source指针。 + * @param fd 可写的文件描述符。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 如果解码失败返回 IMAGE_DECODE_FAILED,如果未知错误返回 IMAGE_UNKNOWN_ERROR, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImagePackerNative_PackToFileFromImageSource(OH_ImagePackerNative *imagePacker, + OH_PackingOptions *options, OH_ImageSourceNative *imageSource, int32_t fd); + +/** + * @brief 将一个Pixelmap编码到文件中。 + * + * @param imagePacker 被操作的OH_ImagePackerNative指针。 + * @param options 打包选项参数 {@link OH_PackingOptions}。 + * @param pixelmap 用于编码的pixelmap指针。 + * @param fd 可写的文件描述符。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 如果解码失败返回 IMAGE_DECODE_FAILED,如果未知错误返回 IMAGE_UNKNOWN_ERROR, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImagePackerNative_PackToFileFromPixelmap(OH_ImagePackerNative *imagePacker, + OH_PackingOptions *options, OH_PixelmapNative *pixelmap, int32_t fd); + +/** + * @brief 释放OH_ImagePackerNative指针。 + * + * @param imagePacker 被操作的OH_ImagePackerNative指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImagePackerNative_Release(OH_ImagePackerNative *imagePacker); + +#ifdef __cplusplus +}; +#endif +/* *@} */ +#endif // INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_IMAGE_PACKER_NATIVE_H_ \ No newline at end of file diff --git a/zh-cn/native_sdk/media/image/image_source_native.h b/zh-cn/native_sdk/media/image/image_source_native.h new file mode 100644 index 0000000000000000000000000000000000000000..16072dcc9ca983a2b3cb87f1079e899880714d8a --- /dev/null +++ b/zh-cn/native_sdk/media/image/image_source_native.h @@ -0,0 +1,403 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @addtogroup image + * @{ + * + * @brief 提供图片编解码能力。 + * + * @since 12 + */ + +/** + * @file image_source_native.h + * + * @brief 图片解码API。 + * + * @library libimage_source.so + * @syscap SystemCapability.Multimedia.Image.ImageSource + * @since 12 + */ + +#ifndef INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_IMAGE_SOURCE_NATIVE_H_ +#define INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_IMAGE_SOURCE_NATIVE_H_ +#include "image_common.h" + +#include "pixelmap_native.h" +#include "rawfile/raw_file.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief ImageSource结构体类型,用于执行ImageSource相关操作。 + * + * @since 12 + */ +struct OH_ImageSourceNative; +typedef struct OH_ImageSourceNative OH_ImageSourceNative; + +/** + * @brief 图片源信息结构体 + * {@link OH_ImageSourceInfo_Create}. + * + * @since 12 + */ +struct OH_ImageSource_Info; +typedef struct OH_ImageSource_Info OH_ImageSource_Info; + +/** + * @brief 创建OH_ImageSource_Info指针。 + * + * @param info 被操作的OH_ImageSource_Info指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceInfo_Create(OH_ImageSource_Info **info); + +/** + * @brief 获取图片的宽。 + * + * @param info 被操作的OH_ImageSource_Info指针。 + * @param width 图片的宽,单位:像素。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceInfo_GetWidth(OH_ImageSource_Info *info, uint32_t *width); + +/** + * @brief 获取图片的高。 + * + * @param info 被操作的OH_ImageSource_Info指针。 + * @param height 图片的高,单位:像素高 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceInfo_GetHeight(OH_ImageSource_Info *info, uint32_t *height); + +/** + * @brief 释放OH_ImageSource_Info指针。 + * + * @param info 被操作的OH_ImageSource_Info指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceInfo_Release(OH_ImageSource_Info *info); + +/** + * @brief 编码选项参数结构体,被用于{@link OH_ImageSourceNative_CreatePixelmap}。 + * + * @since 12 + */ +struct OH_DecodingOptions; +typedef struct OH_DecodingOptions OH_DecodingOptions; + +/** + * @brief 创建OH_DecodingOptions指针。 + * + * @param options 被操作的OH_DecodingOptions指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_DecodingOptions_Create(OH_DecodingOptions **options); + +/** + * @brief 获取pixel格式。 + * + * @param options 被操作的OH_DecodingOptions指针。 + * @param pixelFormat pixel格式{@link PIXEL_FORMAT}。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_DecodingOptions_GetPixelFormat(OH_DecodingOptions *options, + int32_t *pixelFormat); + +/** + * @brief 设置pixel格式。 + * + * @param options 被操作的OH_DecodingOptions指针。 + * @param pixelFormat pixel格式{@link PIXEL_FORMAT}。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_DecodingOptions_SetPixelFormat(OH_DecodingOptions *options, + int32_t pixelFormat); + +/** + * @brief 获取解码图片序号。 + * + * @param options 被操作的OH_DecodingOptions指针。 + * @param index 解码图片序号。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_DecodingOptions_GetIndex(OH_DecodingOptions *options, uint32_t *index); + +/** + * @brief 设置解码图片序号。 + * + * @param options 被操作的OH_DecodingOptions指针。 + * @param index 解码图片序号。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_DecodingOptions_SetIndex(OH_DecodingOptions *options, uint32_t index); + +/** + * @brief 获取旋转角度。 + * + * @param options 被操作的OH_DecodingOptions指针。 + * @param rotate 旋转角度,单位为deg。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_DecodingOptions_GetRotate(OH_DecodingOptions *options, float *rotate); + +/** + * @brief 设置旋转角度。 + * + * @param options 被操作的OH_DecodingOptions指针。 + * @param rotate 旋转角度,单位为deg。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_DecodingOptions_SetRotate(OH_DecodingOptions *options, float rotate); + +/** + * @brief 获取期望输出大小。 + * + * @param options 被操作的OH_DecodingOptions指针。 + * @param desiredSize 期望输出大小。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_DecodingOptions_GetDesiredSize(OH_DecodingOptions *options, + Image_Size *desiredSize); + +/** + * @brief 设置期望输出大小。 + * + * @param options 被操作的OH_DecodingOptions指针。 + * @param desiredSize 期望输出大小。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_DecodingOptions_SetDesiredSize(OH_DecodingOptions *options, + Image_Size *desiredSize); + +/** + * @brief 设置解码区域。 + * + * @param options 被操作的OH_DecodingOptions指针。 + * @param desiredRegion 解码区域。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_DecodingOptions_GetDesiredRegion(OH_DecodingOptions *options, + Image_Region *desiredRegion); + +/** + * @brief 设置解码区域。 + * + * @param options 被操作的OH_DecodingOptions指针。 + * @param desiredRegion 解码区域。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_DecodingOptions_SetDesiredRegion(OH_DecodingOptions *options, + Image_Region *desiredRegion); + +/** + * @brief 释放OH_DecodingOptions指针。 + * + * @param options 被操作的OH_DecodingOptions指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_DecodingOptions_Release(OH_DecodingOptions *options); + +/** + * @brief 通过uri创建OH_ImageSourceNative指针。 + * + * @param uri 指向图像源URI的指针。只接受文件URI或Base64 URI。 + * @param uriSize URI长度。 + * @param res 指向c++本地层创建的OH_ImageSourceNative对象的指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 如果解码数据源异常返回 IMAGE_BAD_SOURCE, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceNative_CreateFromUri(char *uri, size_t uriSize, OH_ImageSourceNative **res); + +/** + * @brief 通过fd创建OH_ImageSourceNative指针。 + * + * @param fd 文件描述符fd。 + * @param res 指向c++本地层创建的OH_ImageSourceNative对象的指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceNative_CreateFromFd(int32_t fd, OH_ImageSourceNative **res); + +/** + * @brief 通过缓冲区数据创建OH_ImageSourceNative指针。 + * + * @param data 图像缓冲区数据。 + * @param dataSize 图像缓冲区数据长度。 + * @param res 指向c++本地层创建的OH_ImageSourceNative对象的指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 如果解码数据源异常返回 IMAGE_BAD_SOURCE, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceNative_CreateFromData(uint8_t *data, size_t dataSize, OH_ImageSourceNative **res); + +/** + * @brief 通过图像资源文件的RawFileDescriptor创建OH_ImageSourceNative指针 + * + * @param rawFile 指示raw文件的文件描述符。 + * @param res 指向c++本地层创建的OH_ImageSourceNative对象的指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceNative_CreateFromRawFile(RawFileDescriptor *rawFile, OH_ImageSourceNative **res); + +/** + * @brief 通过图片解码参数创建OH_PixelmapNative指针 + * + * @param source 被操作的OH_ImageSourceNative指针。 + * @param options 解码参数。 + * @param resPixMap 指向c++本地层创建的OH_PixelmapNative对象的指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceNative_CreatePixelmap(OH_ImageSourceNative *source, OH_DecodingOptions *options, + OH_PixelmapNative **pixelmap); + +/** + * @brief 通过图片解码参数创建OH_PixelmapNative数组 + * + * @param source 被操作的OH_ImageSourceNative指针。 + * @param options 解码参数。 + * @param resVecPixMap 指向c++本地层创建的OH_PixelmapNative对象的指针数组。 + * @param size 数组长度。 用户可以使用{@link OH_ImageSourceNative_GetFrameCount}获取。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 如果不支持的操作返回 IMAGE_UNSUPPORTED_OPERATION, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceNative_CreatePixelmapList(OH_ImageSourceNative *source, OH_DecodingOptions *options, + OH_PixelmapNative *resVecPixMap[], size_t size); + +/** + * @brief 获取图像延迟时间数组 + * + * @param source 被操作的OH_ImageSourceNative指针。 + * @param delayTimeList 指向获得的延迟时间列表的指针。它不能是空指针。 + * @param size delayTimeList的大小。用户可以从{@link OH_ImageSourceNative_GetFrameCount}获得大小。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceNative_GetDelayTimeList(OH_ImageSourceNative *source, int32_t *delayTimeList, size_t size); + +/** + * @brief 获取指定序号的图片信息。 + * + * @param source 被操作的OH_ImageSourceNative指针。 + * @param index 图片序号。对GIF图片可传入[0,N-1],N表示GIF的帧数。对只有一帧数据的图片格式,可传入0。 + * @param info 指向获取的图像源信息的OH_ImageSource_Info指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceNative_GetImageInfo(OH_ImageSourceNative *source, int32_t index, + OH_ImageSource_Info *info); + +/** + * @brief 获取图片指定属性键的值。 + * + * @param source 被操作的OH_ImageSourceNative指针。 + * @param key 指示指向属性的指针,详情请参见{@link Image_String},key的取值范围参考OHOS_IMAGE_PROPERTY_XXX定义。 + * 使用ImageSource后释放,参见{@link OH_ImageSourceNative_Release}。 + * @param value 指向获取的值的指针。用户可以传入一个空指针和零大小, + * 我们将分配内存,但用户必须在使用后释放内存。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceNative_GetImageProperty(OH_ImageSourceNative *source, Image_String *key, + Image_String *value); + +/** + * @brief 通过指定的键修改图片属性的值。 + * @param source 被操作的OH_ImageSourceNative指针。 + * @param key 指向属性键的指针,详情请参见{@link Image_String},key是一个exif常数。 + * 使用ImageSource后释放,参见{@link OH_ImageSourceNative_Release}。 + * @param value 需要修改的属性值。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceNative_ModifyImageProperty(OH_ImageSourceNative *source, Image_String *key, + Image_String *value); + +/** + * @brief 获取图像帧数。 + * + * @param source 被操作的OH_ImageSourceNative指针。 + * @param frameCount 图像帧数。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceNative_GetFrameCount(OH_ImageSourceNative *source, uint32_t *frameCount); + +/** + * @brief 释放OH_ImageSourceNative指针。 + * + * @param source 要释放的OH_ImageSourceNative指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_ImageSourceNative_Release(OH_ImageSourceNative *source); + +#ifdef __cplusplus +}; +#endif +/** @} */ +#endif // INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_IMAGE_SOURCE_NATIVE_H_ \ No newline at end of file diff --git a/zh-cn/native_sdk/media/image/pixelmap_native.h b/zh-cn/native_sdk/media/image/pixelmap_native.h new file mode 100644 index 0000000000000000000000000000000000000000..3d44481153b28d07157834e65a3e303dc1a433ff --- /dev/null +++ b/zh-cn/native_sdk/media/image/pixelmap_native.h @@ -0,0 +1,454 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @addtogroup image + * @{ + * + * @brief 提供图片编解码能力。 + * + * @since 12 + */ + +/** + * @file pixelmap_native.h + * + * @brief 访问Pixelmap的API。 + * + * @library libpixelmap.so + * @Syscap SystemCapability.Multimedia.Image.Core + * @since 12 + */ + +#ifndef INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_PIXELMAP_NATIVE_H_ +#define INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_PIXELMAP_NATIVE_H_ +#include "image_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Pixelmap结构体类型,用于执行Pixelmap相关操作。 + * + * @since 12 + */ +struct OH_PixelmapNative; +typedef struct OH_PixelmapNative OH_PixelmapNative; + +/** + * @brief Pixelmap透明度类型。 + * + * @since 12 + */ +typedef enum { + /* + * 未知格式 + */ + PIXELMAP_ALPHA_TYPE_UNKNOWN = 0, + /* + * 不透明的格式 + */ + PIXELMAP_ALPHA_TYPE_OPAQUE = 1, + /* + * 预乘透明度格式 + */ + PIXELMAP_ALPHA_TYPE_PREMULTIPLIED = 2, +}PIXELMAP_ALPHA_TYPE; + +typedef enum { + /* + * 未知格式 + */ + PIXEL_FORMAT_UNKNOWN = 0, + /* + * RGB_565格式 + */ + PIXEL_FORMAT_RGB_565 = 2, + /* + * RGBA_8888格式 + */ + PIXEL_FORMAT_RGBA_8888 = 3, + /* + * BGRA_8888格式 + */ + PIXEL_FORMAT_BGRA_8888 = 4, + /* + * RGB_888格式 + */ + PIXEL_FORMAT_RGB_888 = 5, + /* + * ALPHA_8格式 + */ + PIXEL_FORMAT_ALPHA_8 = 6, + /* + * RGBA_F16格式 + */ + PIXEL_FORMAT_RGBA_F16 = 7, + /* + * NV21格式 + */ + PIXEL_FORMAT_NV21 = 8, + /* + * NV12格式 + */ + PIXEL_FORMAT_NV12 = 9, +} PIXEL_FORMAT; + +/** + * @brief 初始化参数结构体。 + * + * @since 12 + */ +struct OH_Pixelmap_InitializationOptions; +typedef struct OH_Pixelmap_InitializationOptions OH_Pixelmap_InitializationOptions; + +/** + * @brief 创建OH_Pixelmap_InitializationOptions指针。 + * + * @param options 被创建的OH_Pixelmap_InitializationOptions指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapInitializationOptions_Create(OH_Pixelmap_InitializationOptions **options); + +/** + * @brief 获取图片宽。 + * + * @param options 被操作的OH_Pixelmap_InitializationOptions指针。 + * @param width 图片的宽,单位:像素。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapInitializationOptions_GetWidth(OH_Pixelmap_InitializationOptions *options, + uint32_t *width); + +/** + * @brief 设置图片宽。 + * + * @param options 被操作的OH_Pixelmap_InitializationOptions指针。 + * @param width 图片的宽,单位:像素。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapInitializationOptions_SetWidth(OH_Pixelmap_InitializationOptions *options, + uint32_t width); + +/** + * @brief 获取图片高。 + * + * @param options 被操作的OH_Pixelmap_InitializationOptions指针。 + * @param height 图片的高,单位:像素。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapInitializationOptions_GetHeight(OH_Pixelmap_InitializationOptions *options, + uint32_t *height); + +/** + * @brief 设置图片高。 + * + * @param options 被操作的OH_Pixelmap_InitializationOptions指针。 + * @param height 图片的高,单位:像素。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapInitializationOptions_SetHeight(OH_Pixelmap_InitializationOptions *options, + uint32_t height); + +/** + * @brief 获取像素格式。 + * + * @param options 被操作的OH_Pixelmap_InitializationOptions指针。 + * @param pixelFormat 像素格式{@link PIXEL_FORMAT}。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapInitializationOptions_GetPixelFormat(OH_Pixelmap_InitializationOptions *options, + int32_t *pixelFormat); + +/** + * @brief 设置像素格式。 + * + * @param options 被操作的OH_Pixelmap_InitializationOptions指针。 + * @param pixelFormat 像素格式{@link PIXEL_FORMAT}。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapInitializationOptions_SetPixelFormat(OH_Pixelmap_InitializationOptions *options, + int32_t pixelFormat); + +/** + * @brief 获取透明度类型。 + * + * @param options 被操作的OH_Pixelmap_InitializationOptions指针。 + * @param alphaType 透明度类型{@link PIXELMAP_ALPHA_TYPE}。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapInitializationOptions_GetAlphaType(OH_Pixelmap_InitializationOptions *options, + int32_t *alphaType); + +/** + * @brief 设置透明度类型。 + * + * @param options 被操作的OH_Pixelmap_InitializationOptions指针。 + * @param alphaType 透明度类型{@link PIXELMAP_ALPHA_TYPE}。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapInitializationOptions_SetAlphaType(OH_Pixelmap_InitializationOptions *options, + int32_t alphaType); + +/** + * @brief 释放OH_Pixelmap_InitializationOptions指针。 + * + * @param options 被释放的OH_Pixelmap_InitializationOptions指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapInitializationOptions_Release(OH_Pixelmap_InitializationOptions *options); + +/** + * @brief 图像像素信息结构体。 + * + * @since 12 + */ +struct OH_Pixelmap_ImageInfo; +typedef struct OH_Pixelmap_ImageInfo OH_Pixelmap_ImageInfo; + +/** + * @brief 创建OH_Pixelmap_ImageInfo指针。 + * + * @param info 被创建的OH_Pixelmap_ImageInfo指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapImageInfo_Create(OH_Pixelmap_ImageInfo **info); + +/** + * @brief 获取图片宽。 + * + * @param info 被操作的OH_Pixelmap_ImageInfo指针。 + * @param width 图片宽,单位:像素。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapImageInfo_GetWidth(OH_Pixelmap_ImageInfo *info, uint32_t *width); + +/** + * @brief 获取图片高。 + * + * @param info 被操作的OH_Pixelmap_ImageInfo指针。 + * @param height 图片高,单位:像素。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapImageInfo_GetHeight(OH_Pixelmap_ImageInfo *info, uint32_t *height); + +/** + * @brief 获取行跨距。 + * + * @param info 被操作的OH_Pixelmap_ImageInfo指针。 + * @param rowStride 跨距,内存中每行像素所占的空间。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapImageInfo_GetRowStride(OH_Pixelmap_ImageInfo *info, uint32_t *rowStride); + +/** + * @brief 获取像素格式。 + * + * @param info 被操作的OH_Pixelmap_ImageInfo指针。 + * @param pixelFormat 像素格式。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapImageInfo_GetPixelFormat(OH_Pixelmap_ImageInfo *info, int32_t *pixelFormat); + +/** + * @brief 获取透明度类型。 + * + * @param info 被操作的OH_Pixelmap_ImageInfo指针。 + * @param alphaType 透明度类型{@link PIXELMAP_ALPHA_TYPE}。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapImageInfo_GetAlphaType(OH_Pixelmap_ImageInfo *info, int32_t *alphaType); + +/** + * @brief 释放OH_Pixelmap_ImageInfo指针。 + * + * @param info 被释放的OH_Pixelmap_ImageInfo指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapImageInfo_Release(OH_Pixelmap_ImageInfo *info); + +/** + * @brief 通过属性创建PixelMap,默认采用BGRA_8888格式处理数据。 + * + * @param data BGRA_8888格式的颜色数组。 + * @param dataLength 数组长度。 + * @param options 创建像素的属性。 + * @param pixelmap 被创建的OH_PixelmapNative对象指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 如果不支持的操作返回 IMAGE_UNSUPPORTED_OPERATION, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapNative_CreatePixelmap(uint8_t *data, size_t dataLength, + OH_Pixelmap_InitializationOptions *options, OH_PixelmapNative **pixelmap); + +/** + * @brief 读取图像像素数据,结果写入ArrayBuffer里,使用Promise形式返回。 + * 指定BGRA_8888格式创建pixelmap,读取的像素数据与原数据保持一致。 + * + * @param pixelmap 被操作的OH_PixelmapNative指针。 + * @param destination 缓冲区,获取的图像像素数据写入到该内存区域内。 + * @param bufferSize 缓冲区大小。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 如果未知错误返回 IMAGE_UNKNOWN_ERROR, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapNative_ReadPixels(OH_PixelmapNative *pixelmap, uint8_t *destination, size_t *bufferSize); + +/** + * @brief 读取缓冲区中的图片数据,结果写入PixelMap中 + * + * @param pixelmap 被操作的OH_PixelmapNative指针。 + * @param source 图像像素数据。 + * @param bufferSize 图像像素数据长度。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 如果不支持的操作返回 IMAGE_UNSUPPORTED_OPERATION,如果未知错误返回 IMAGE_UNKNOWN_ERROR, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapNative_WritePixels(OH_PixelmapNative *pixelmap, uint8_t *source, size_t bufferSize); + +/** + * @brief 获取图像像素信息。 + * + * @param pixelmap 被操作的OH_PixelmapNative指针。 + * @param imageInfo 图像像素信息。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapNative_GetImageInfo(OH_PixelmapNative *pixelmap, OH_Pixelmap_ImageInfo *imageInfo); + +/** + * @brief 通过设置透明比率来让PixelMap达到对应的透明效果 + * + * @param pixelmap 被操作的OH_PixelmapNative指针。 + * @param rate 透明比率的值。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapNative_Opacity(OH_PixelmapNative *pixelmap, float rate); + +/** + * @brief 根据输入的宽高对图片进行缩放。 + * + * @param pixelmap 被操作的OH_PixelmapNative指针。 + * @param scaleX 宽度的缩放比例。 + * @param scaleY 高度的缩放比例。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapNative_Scale(OH_PixelmapNative *pixelmap, float scaleX, float scaleY); + +/** + * @brief 根据输入的坐标对图片进行位置变换。 + * + * @param pixelmap 被操作的OH_PixelmapNative指针。 + * @param x 区域横坐标。 + * @param y 区域纵坐标。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapNative_Translate(OH_PixelmapNative *pixelmap, float x, float y); + +/** + * @brief 根据输入的角度对图片进行旋转。 + * + * @param pixelmap 被操作的OH_PixelmapNative指针。 + * @param angle 图片旋转的角度,单位为deg。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapNative_Rotate(OH_PixelmapNative *pixelmap, float angle); + +/** + * @brief 根据输入的条件对图片进行翻转。 + * + * @param pixelmap 被操作的OH_PixelmapNative指针。 + * @param shouldFilpHorizontally 是否水平翻转图像。 + * @param shouldFilpVertically 是否垂直翻转图像。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapNative_Flip(OH_PixelmapNative *pixelmap, bool shouldFilpHorizontally, bool shouldFilpVertically); + +/** + * @brief 根据输入的尺寸对图片进行裁剪 + * + * @param pixelmap 被操作的OH_PixelmapNative指针。 + * @param region 裁剪的尺寸。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapNative_Crop(OH_PixelmapNative *pixelmap, Image_Region *region); + +/** + * @brief 释放OH_PixelmapNative指针。 + * + * @param pixelmap 被释放的OH_PixelmapNative指针。 + * @return 如果操作成功返回 IMAGE_SUCCESS,如果参数错误返回 IMAGE_BAD_PARAMETER, + * 具体请参考 {@link Image_ErrorCode}。 + * @since 12 + */ +Image_ErrorCode OH_PixelmapNative_Release(OH_PixelmapNative *pixelmap); + + +#ifdef __cplusplus +}; +#endif +/** @} */ +#endif // INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_PIXELMAP_NATIVE_H_