图片处理

说明: 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

API Version 9当前为Canary版本,仅供试用,不保证接口可稳定调用。

导入模块

import image from '@ohos.multimedia.image';

image.createPixelMap8+

createPixelMap(colors: ArrayBuffer, options: InitializationOptions): Promise<PixelMap>

通过属性创建PixelMap,通过Promise返回结果。

系统能力: SystemCapability.Multimedia.Image

参数:

名称 类型 必填 说明
colors ArrayBuffer 颜色数组。
options InitializetionOptions 创建像素的属性,包括透明度,尺寸,缩略值,像素格式和是否可编辑。

返回值:

类型 说明
Promise<PixelMap> 返回Pixelmap。

示例:

image.createPixelMap(Color, opts)
            .then((pixelmap) => {
            })

image.createPixelMap8+

createPixelMap(colors: ArrayBuffer, options: InitializationOptions, callback: AsyncCallback<PixelMap>): void

通过属性创建PixelMap,通过回调函数返回结果。

系统能力: SystemCapability.Multimedia.Image

参数:

名称 类型 必填 说明
colors ArrayBuffer 颜色数组。
options InitializetionOptions 属性。
callback AsyncCallback<PixelMap> 通过回调返回PixelMap对象。

示例:

image.createPixelMap(Color, opts, (pixelmap) => {
            })

PixelMap7+

图像像素类,用于读取或写入图像数据以及获取图像信息。在调用PixelMap的方法前,需要先通过createPixelMap创建一个PixelMap实例。

属性

名称 类型 可读 可写 说明
isEditable7+ boolean 设定是否图像像素可被编辑。
系统能力: SystemCapability.Multimedia.Image

readPixelsToBuffer7+

readPixelsToBuffer(dst: ArrayBuffer): Promise<void>

读取图像像素数据,结果写入ArrayBuffer里,使用Promise形式返回。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
dst ArrayBuffer 缓冲区,函数执行结束后获取的图像像素数据写入到该内存区域内。

返回值:

类型 说明
Promise<void> Promise实例,用于获取结果,失败时返回错误信息。

示例:

pixelmap.readPixelsToBuffer(readBuffer).then(() => {
                        //符合条件则进入 
                }).catch(error => {
                //不符合条件则进入
            })

readPixelsToBuffer7+

readPixelsToBuffer(dst: ArrayBuffer, callback: AsyncCallback<void>): void

读取图像像素数据,结果写入ArrayBuffer里,使用callback形式返回。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
dst ArrayBuffer 缓冲区,函数执行结束后获取的图像像素数据写入到该内存区域内。
callback AsyncCallback<void> 获取回调,失败时返回错误信息。

示例:

pixelmap.readPixelsToBuffer(readBuffer, () => {
            })

readPixels7+

readPixels(area: PositionArea): Promise<void>

读取区域内的图片数据,使用Promise形式返回读取结果。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
area PositionArea 区域大小,根据区域读取。

返回值:

类型 说明
Promise<void> Promise实例,用于获取读取结果,失败时返回错误信息。

示例:

pixelmap.readPixels(area).then((data) => {
                  //符合条件则进入      
                }).catch(error => {
                //不符合条件则进入
            })

readPixels7+

readPixels(area: PositionArea, callback: AsyncCallback<void>): void

读取区域内的图片数据,使用callback形式返回读取结果。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
area PositionArea 区域大小,根据区域读取。
callback AsyncCallback<void> 获取回调,失败时返回错误信息。

示例:

let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts, (err, pixelmap) => {
     if(pixelmap == undefined){
          console.info('createPixelMap failed');
          expect(false).assertTrue();
          done();
      }else{
          const area = { pixels: new ArrayBuffer(8),
                    offset: 0,
                    stride: 8,
                    region: { size: { height: 1, width: 2 }, x: 0, y: 0 }}
           pixelmap.readPixels(area, () => {
               console.info('readPixels success');
           })
      }
})

writePixels7+

writePixels(area: PositionArea): Promise<void>

将PixelMap写入指定区域内,使用Promise形式返回写入结果。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
area PositionArea 区域,根据区域写入。

返回值:

类型 说明
Promise<void> Promise实例,用于获取写入结果,失败时返回错误信息。

示例:

const color = new ArrayBuffer(96);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts)
    .then( pixelmap => {
        if (pixelmap == undefined) {
            console.info('createPixelMap failed');
            expect(false).assertTrue()
            done();
        }
        const area = { pixels: new ArrayBuffer(8),
            offset: 0,
            stride: 8,
            region: { size: { height: 1, width: 2 }, x: 0, y: 0 }
        }
        var bufferArr = new Uint8Array(area.pixels);
        for (var i = 0; i < bufferArr.length; i++) {
            bufferArr[i] = i + 1;
        }

        pixelmap.writePixels(area).then(() => {
            const readArea = { pixels: new ArrayBuffer(8),
                offset: 0,
                stride: 8,
                // region.size.width + x < opts.width, region.size.height + y < opts.height
                region: { size: { height: 1, width: 2 }, x: 0, y: 0 }
            }        
        })
    })
    .catch(error => {
        console.log('error: ' + error);
        expect().assertFail();
        done();
    })

writePixels7+

writePixels(area: PositionArea, callback: AsyncCallback<void>): void

将PixelMap写入指定区域内,使用callback形式返回写入结果。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
area PositionArea 区域,根据区域写入。
callback: AsyncCallback<void> 获取回调,失败时返回错误信息。

示例:

pixelmap.writePixels(area, () => {
                const readArea = {
                    pixels: new ArrayBuffer(20),
                    offset: 0,
                    stride: 8,
                    region: { size: { height: 1, width: 2 }, x: 0, y: 0 },
                }
            })

writeBufferToPixels7+

writeBufferToPixels(src: ArrayBuffer): Promise<void>

读取缓冲区中的图片数据,结果写入PixelMap中,使用Promise形式返回。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
src ArrayBuffer 图像像素数据。

返回值:

类型 说明
Promise<void> Promise实例,用于获取结果,失败时返回错误信息。

示例:

pixelMap.writeBufferToPixels(colorBuffer).then(() => {
    console.log("Succeeded in writing data from a buffer to a PixelMap.");
}).catch((err) => {
    console.error("Failed to write data from a buffer to a PixelMap.");
});

writeBufferToPixels7+

writeBufferToPixels(src: ArrayBuffer, callback: AsyncCallback<void>): void

读取缓冲区中的图片数据,结果写入PixelMap中,使用callback形式返回。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
src ArrayBuffer 图像像素数据。
callback AsyncCallback<void> 获取回调,失败时返回错误信息。

示例:

pixelMap.writeBufferToPixels(colorBuffer, function(err) {
    if (err) {
        console.error("Failed to write data from a buffer to a PixelMap.");
        return;
    }
    console.log("Succeeded in writing data from a buffer to a PixelMap.");
});

getImageInfo7+

getImageInfo(): Promise<ImageInfo>

获取图像像素信息,使用Promise形式返回获取的图像像素信息。

系统能力: SystemCapability.Multimedia.Image

返回值:

类型 说明
Promise<ImageInfo> Promise实例,用于异步获取图像像素信息,失败时返回错误信息。

示例:

pixelMap.getImageInfo().then(function(info) {
    console.log("Succeeded in obtaining the image pixel map information.");
}).catch((err) => {
    console.error("Failed to obtain the image pixel map information.");
});

getImageInfo7+

getImageInfo(callback: AsyncCallback<ImageInfo>): void

获取图像像素信息,使用callback形式返回获取的图像像素信息。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
callback AsyncCallback<ImageInfo> 获取图像像素信息回调,异步返回图像像素信息,失败时返回错误信息。

示例:

pixelmap.getImageInfo((imageInfo) => {})

getBytesNumberPerRow7+

getBytesNumberPerRow(): number

获取图像像素每行字节数。

系统能力: SystemCapability.Multimedia.Image

返回值:

类型 说明
number 图像像素的行字节数。

示例:

rowCount = pixelmap.getBytesNumberPerRow()

getPixelBytesNumber7+

getPixelBytesNumber(): number

获取图像像素的总字节数。

系统能力: SystemCapability.Multimedia.Image

返回值:

类型 说明
number 图像像素的总字节数。

示例:

pixelBytesNumber = pixelmap.getPixelBytesNumber()

release7+

release():Promise<void>

释放PixelMap对象,使用Promise形式返回释放结果。

系统能力: SystemCapability.Multimedia.Image

返回值:

类型 说明
Promise<void> 异步返回释放结果。

示例:

 pixelmap.release().then(() => { })
            .catch(error => {})

release7+

release(callback: AsyncCallback<void>): void

释放PixelMap对象,使用callback形式返回释放结果。

系统能力: SystemCapability.Multimedia.Image

参数:

名称 类型 必填 说明
callback AsyncCallback<void> 异步返回释放结果。

示例:

pixelmap.release(()=>{ })   

image.createImageSource

createImageSource(uri: string): ImageSource

通过传入的uri创建图片源实例。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
uri string 图片路径,当前仅支持应用沙箱路径。

返回值:

类型 说明
ImageSource 返回ImageSource类实例,失败时返回undefined。

示例:

let path = this.context.getApplicationContext().fileDirs + "test.jpg";
const imageSourceApi = image.createImageSource(path);

image.createImageSource7+

createImageSource(fd: number): ImageSource

通过传入文件描述符来创建图片源实例。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
fd number 文件描述符fd。

返回值:

类型 说明
ImageSource 返回ImageSource类实例,失败时返回undefined。

示例:

const imageSourceApi = image.createImageSource(0)

ImageSource

图片源类,用于获取图片相关信息。在调用ImageSource的方法前,需要先通过createImageSource构建一个ImageSource实例。

属性

名称 类型 可读 可写 说明
supportedFormats Array<string> 支持的图片格式,包括:png,jpeg,wbmp,bmp,gif,webp,heif等。
系统能力: SystemCapability.Multimedia.Image

getImageInfo

getImageInfo(index: number, callback: AsyncCallback<ImageInfo>): void

获取指定序号的图片信息,使用callback形式返回图片信息。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
index number 创建图片源时的序号。
callback AsyncCallback<ImageInfo> 获取图片信息回调,异步返回图片信息对象。

示例:

imageSourceApi.getImageInfo(0,(error, imageInfo) => {})

getImageInfo

getImageInfo(callback: AsyncCallback<ImageInfo>): void

获取图片信息,使用callback形式返回图片信息。

系统能力: SystemCapability.Multimedia.Image

参数:

名称 类型 必填 说明
callback AsyncCallback<ImageInfo> 获取图片信息回调,异步返回图片信息对象。

示例:

imageSourceApi.getImageInfo(imageInfo => {})

getImageInfo

getImageInfo(index?: number): Promise<ImageInfo>

获取图片信息,使用Promise形式返回图片信息。

系统能力: SystemCapability.Multimedia.Image

参数:

名称 类型 必填 说明
index number 创建图片源时的序号,不选择时默认为0。

返回值:

类型 说明
Promise<ImageInfo> 返回获取到的图片信息。

示例:

imageSourceApi.getImageInfo(0)
            .then(imageInfo => {})
			.catch(error => {})

getImageProperty7+

getImageProperty(key:string, options?: GetImagePropertyOptions): Promise<string>

获取图片中给定索引处图像的指定属性键的值,用Promise形式返回结果。

系统能力: SystemCapability.Multimedia.Image

参数:

名称 类型 必填 说明
key string 图片属性名。
options GetImagePropertyOptions 图片属性,包括图片序号与默认属性值。

返回值:

类型 说明
Promise<string> Promise实例,用于异步获取图片属性值,如获取失败则返回属性默认值。

示例:

imageSourceApi.getImageProperty("BitsPerSample")
            .then(data => {})
            .catch(error => {})

getImageProperty7+

getImageProperty(key:string, callback: AsyncCallback<string>): void

获取图片中给定索引处图像的指定属性键的值,用callback形式返回结果。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
key string 图片属性名。
callback AsyncCallback<string> 获取图片属性回调,返回图片属性值,如获取失败则返回属性默认值。

示例:

imageSourceApi.getImageProperty("BitsPerSample",(error,data) => {})

getImageProperty7+

getImageProperty(key:string, options: GetImagePropertyOptions, callback: AsyncCallback<string>): void

获取图片指定属性键的值,callback形式返回结果。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
key string 图片属性名。
options GetImagePropertyOptions 图片属性,包括图片序号与默认属性值。
callback AsyncCallback<string> 获取图片属性回调,返回图片属性值,如获取失败则返回属性默认值。

示例:

imageSourceApi.getImageProperty("BitsPerSample",property,(error,data) => {})

createPixelMap7+

createPixelMap(options?: DecodingOptions): Promise<PixelMap>

通过图片解码参数创建PixelMap对象。

系统能力: SystemCapability.Multimedia.Image

参数:

名称 类型 必填 说明
options DecodingOptions 解码参数。

返回值:

类型 说明
Promise<PixelMap> 异步返回Promise对象。

示例:

imageSourceApi.createPixelMap().then(pixelmap => {})
    						.catch(error => {})

createPixelMap7+

createPixelMap(callback: AsyncCallback<PixelMap>): void

通过默认参数创建PixelMap对象,使用callback形式返回结果。

系统能力: SystemCapability.Multimedia.Image

参数:

名称 类型 必填 说明
callback AsyncCallback<PixelMap> 通过回调返回PixelMap对象。

示例:

imageSourceApi.createPixelMap(pixelmap => {})

createPixelMap7+

createPixelMap(options: DecodingOptions, callback: AsyncCallback<PixelMap>): void

通过图片解码参数创建PixelMap对象。

系统能力: SystemCapability.Multimedia.Image

参数:

名称 类型 必填 说明
options DecodingOptions 解码参数。
callback AsyncCallback<PixelMap> 通过回调返回PixelMap对象。

示例:

imageSourceApi.createPixelMap(decodingOptions, pixelmap => {})    

release

release(callback: AsyncCallback<void>): void

释放图片源实例,使用callback形式返回结果。

系统能力: SystemCapability.Multimedia.Image

参数:

名称 类型 必填 说明
callback AsyncCallback<void> 资源释放回调,失败时返回错误信息。

示例:

imageSourceApi.release(() => {})

release

release(): Promise<void>

释放图片源实例,使用Promise形式返回结果。

系统能力: SystemCapability.Multimedia.Image

返回值:

类型 说明
Promise<void> Promise实例,异步返回结果。

示例:

imageSourceApi.release().then(()=>{ }).catch(error => {})

image.createImagePacker

createImagePacker(): ImagePacker

创建ImagePacker实例。

系统能力: SystemCapability.Multimedia.Image

返回值:

类型 说明
ImagePacker 返回ImagePacker实例。

示例:

const imagePackerApi = image.createImagePacker();

ImagePacker

图片打包器类,用于图片压缩和打包。在调用ImagePacker的方法前,需要先通过createImagePacker构建一个ImagePacker实例。

属性

名称 类型 可读 可写 说明
supportedFormats Array<string> 图片打包支持的格式,jpeg。
系统能力: SystemCapability.Multimedia.Image

packing

packing(source: ImageSource, option: PackingOption, callback: AsyncCallback<ArrayBuffer>): void

图片压缩或重新打包,使用callback形式返回结果。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
source ImageSource 打包的图片源。
option PackingOption 设置打包参数。
callback AsyncCallback<ArrayBuffer> 获取图片打包回调,返回打包后数据。

示例:

let packOpts = { format:["image/jpeg"], quality:98 }
imagePackerApi.packing(imageSourceApi, packOpts, data => {})

packing

packing(source: ImageSource, option: PackingOption): Promise<ArrayBuffer>

图片压缩或重新打包,使用Promise形式返回结果。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
source ImageSource 打包的图片源。
option PackingOption 设置打包参数。

返回值:

类型 说明
Promise<ArrayBuffer> Promise实例,用于异步获取压缩或打包后的数据。

示例:

let packOpts = { format:["image/jpeg"], quality:98 }
imagePackerApi.packing(imageSourceApi, packOpts)
    .then( data => { })
	.catch(error => {})

packing8+

packing(source: PixelMap, option: PackingOption, callback: AsyncCallback<ArrayBuffer>): void

图片压缩或重新打包,使用callback形式返回结果。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
source PixelMap 打包的PixelMap资源。
option PackingOption 设置打包参数。
callback AsyncCallback<ArrayBuffer> 获取图片打包回调,返回打包后数据。

示例:

let packOpts = { format:["image/jpeg"], quality:98 }
imagePackerApi.packing(pixelMapApi, packOpts, data => {})

packing8+

packing(source: PixelMap, option: PackingOption): Promise<ArrayBuffer>

图片压缩或重新打包,使用Promise形式返回结果。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
source PixelMap 打包的PixelMap源。
option PackingOption 设置打包参数。

返回值:

类型 说明
Promise<ArrayBuffer> Promise实例,用于异步获取压缩或打包后的数据。

示例:

let packOpts = { format:["image/jpeg"], quality:98 }
imagePackerApi.packing(pixelMapApi, packOpts)
    .then( data => { })
	.catch(error => {})

release

release(callback: AsyncCallback<void>): void

释放图片打包实例,使用callback形式返回结果。

系统能力: SystemCapability.Multimedia.Image

参数:

参数名 类型 必填 说明
callback AsyncCallback<void> 释放回调,失败时返回错误信息。

示例:

imagePackerApi.release(()=>{})

release

release(): Promise<void>

释放图片打包实例,使用Promise形式返回释放结果。

系统能力: SystemCapability.Multimedia.Image

返回值:

类型 说明
Promise<void> Promise实例,用于异步获取释放结果,失败时返回错误信息。

示例:

 imagePackerApi.release().then(()=>{
            }).catch((error)=>{}) 

PositionArea7+

表示图片指定区域内的数据。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.Image

名称 类型 可读 可写 说明
pixels ArrayBuffer 像素。
offset number 偏移量。
stride number 像素间距,stride >= region.size.width*4。
region Region 区域,按照区域读写。写入的区域宽度加X坐标不能大于原图的宽度,写入的区域高度加Y坐标不能大于原图的高度

ImageInfo

表示图片信息。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.Image

名称 类型 可读 可写 说明
size Size 图片大小。

Size

表示图片尺寸。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.Image

名称 类型 可读 可写 说明
height number 输出图片的高。
width number 输出图片的宽。

PixelMapFormat7+

枚举,像素格式。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.Image

名称 默认值 描述
UNKNOWN 0 未知格式。
RGBA_8888 3 格式为RGBA_8888。
RGB_565 2 格式为RGB_565。

AlphaType9+

枚举,透明度。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.Image

名称 默认值 描述
UNKNOWN 0 未知透明度。
OPAQUE 1 没有alpha或图片全透明。
PREMUL 2 RGB前乘alpha。
UNPREMUL 3 RGB不前乘alpha。

ScaleMode9+

枚举,缩略值。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.Image

名称 默认值 描述
CENTER_CROP 1 缩放图像以填充目标图像区域并居中裁剪区域外的效果。
FIT_TARGET_SIZE 2 图像适合目标尺寸的效果。

InitializationOptions8+

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.Image

名称 类型 可读 可写 说明
alphaType9+ AlphaType 透明度。
editable boolean 是否可编辑。
pixelFormat PixelMapFormat 像素格式。
scaleMode9+ ScaleMode 缩略值。
size Size 创建图片大小。

DecodingOptions7+

解码设置选项。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.Image

名称 类型 可读 可写 说明
sampleSize number 缩略图采样大小。
rotate number 旋转角度。
editable boolean 是否可编辑。
desiredSize Size 期望输出大小。
desiredRegion Region 解码区域。
desiredPixelFormat PixelMapFormat 解码的像素格式。
index numer 解码图片序号

Region7+

表示区域信息。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.Image

名称 类型 可读 可写 说明
size Size 区域大小。
x number 区域横坐标。
y number 区域纵坐标。

PackingOption

表示图片打包选项。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.Image

名称 类型 可读 可写 说明
format string 目标格式。
quality number 目标图片质量。

GetImagePropertyOptions7+

表示查询图片属性的索引。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.Image

名称 类型 可读 可写 说明
index number 图片序号。
defaultValue string 默认属性值。

PropertyKey7+

枚举,Exif(Exchangeable image file format)图片信息。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.Image

名称 默认值 说明
BITS_PER_SAMPLE "BitsPerSample" 每个像素比特数。
ORIENTATION "Orientation" 图片方向。
IMAGE_LENGTH "ImageLength" 图片长度。
IMAGE_WIDTH "ImageWidth" 图片宽度。
GPS_LATITUDE "GPSLatitude" 图片纬度。
GPS_LONGITUDE "GPSLongitude" 图片经度。
GPS_LATITUDE_REF "GPSLatitudeRef" 纬度引用,例如N或S。
GPS_LONGITUDE_REF "GPSLongitudeRef" 经度引用,例如W或E。