# multimedia_image_framework **Repository Path**: ma-jh/multimedia_image_framework ## Basic Information - **Project Name**: multimedia_image_framework - **Description**: 暂无描述 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/openharmony/multimedia_image_framework - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 708 - **Created**: 2025-02-17 - **Last Updated**: 2025-02-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Image组件 - [简介](#introduction) - [目录](#index) - [使用说明](#usage-guidelines) - [读像素到数组](#readPixelsToBuffer) - [从区域读像素](readpixels) - [写像素到区域](#writePixels) - [写buffer到像素](#writeBufferToPixels) - [获取图片基本信息](#getImageInfo1) - [获取字节](#getBytesNumberPerRow) - [获取位图buffer](#getPixelBytesNumber) - [获取像素密度](#getDensity) - [设置透明比率](#opacity) - [生成Alpha通道](#createAlphaPixelmap) - [图片缩放](#scale) - [位置变换](#translate) - [图片旋转](#rotate) - [图片翻转](#flip) - [图片裁剪](#crop) - [释放位图](#release1) - [从图片源获取信息](#getImageInfo) - [获取整型值](#getImagePropertyInt) - [修改图片属性](#modifyImageProperty) - [创建位图](#createPixelMap) - [更新数据](#updateData) - [释放图片源实例](#release2) - [打包图片](#packing) - [释放packer实例](#release3) - [获取surface id](#getReceivingSurfaceId) - [读取最新图片](#readLatestImage) - [读取下一张图片](#readNextImage) - [注册回调](#on) - [释放receiver实例](#release4) - [获取组件缓存](#getComponent) - [释放image实例](#release5) - [CreateIncrementalSource](#CreateIncrementalSource) - [创建ImageSource实例](#createImageSource2) - [创建PixelMap实例](#createPixelMap2) - [创建imagepacker实例](#createImagePacker2) - [创建imagereceiver实例](#createImageReceiver2) ## 简介 **image_framework仓库**提供了一系列易用的接口用于存放image的源码信息,提供创建图片源和位图管理能力,支持运行标准系统的设备使用。 **图1** Image组件架构图 ![](https://gitee.com/openharmony/multimedia_image_framework/raw/master/figures/Image%E7%BB%84%E4%BB%B6%E6%9E%B6%E6%9E%84%E5%9B%BE.png) 支持能力列举如下: - 创建、释放位图。 - 读写像素。 - 获取位图信息。 - 创建、释放图片源。 - 获取图片源信息。 - 创建、释放packer实例。 ## 目录 仓目录结构如下: ``` /foundation/multimedia/image_framework ├── frameworks # 框架代码 │   ├── innerkitsimpl # 内部接口实现 │   │   └──image # Native 实现 │   └── kitsimpl # 外部接口实现 │   └──image # 外部 NAPI 实现 ├── interfaces # 接口代码 │   ├── innerkits # 内部 Native 接口 │   └── kits # 外部 JS 接口 ├── LICENSE # 证书文件 ├── ohos.build # 编译文件 ├── sa_profile # 服务配置文件 └── services # 服务实现 ``` ## 使用说明 ### 1.读像素到数组 image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何将像素读到缓冲区。 通过调用readPixelsToBuffer读pixels到buffer。 ``` readPixelsToBuffer(dst: ArrayBuffer): Promise; readPixelsToBuffer(dst: ArrayBuffer, callback: AsyncCallback): void; ``` 示例: ``` pixelmap.readPixelsToBuffer(readBuffer).then(() => {}) ``` ### 2.读pixels image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何按照区域读像素。 通过调用readPixels读pixels。 ``` readPixels(area: PositionArea): Promise; readPixels(area: PositionArea, callback: AsyncCallback): void; ``` 示例: ``` pixelmap.readPixels(area).then(() => {}) ``` ### 3.写pixels image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何写像素。 通过调用writepixels写到指定区域。 ``` writePixels(area: PositionArea): Promise; writePixels(area: PositionArea, callback: AsyncCallback): void; ``` 示例: ``` pixelmap.writePixels(area, () => {}) ``` ### 4.writeBufferToPixels image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何将数据写进pixels。 通过调用writeBufferToPixels写到pixel。 ``` writeBufferToPixels(src: ArrayBuffer): Promise; writeBufferToPixels(src: ArrayBuffer, callback: AsyncCallback): void; ``` 示例: ``` pixelmap.writeBufferToPixels(writeColor, () => {}) ``` ### 5.getImageInfo image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何获取图片信息。 通过调用getImageInfo获取图片基本信息。 1.使用create通过属性创建pixelmap。 ``` image.createPixelMap(color, opts, pixelmap =>{}) ``` 2.使用getImageInfo获取图片基本信息。 ``` pixelmap.getImageInfo( imageInfo => {}) ``` ### 6.getBytesNumberPerRow image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何获取每行字节数。 通过调用getBytesNumberPerRow获取字节数。 ``` getBytesNumberPerRow(): Promise; getBytesNumberPerRow(callback: AsyncCallback): void; ``` 示例: ``` pixelmap.getBytesNumberPerRow((num) => {}) ``` ### 7.getPixelBytesNumber image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何获取buffer。 通过调用getPixelBytesNumber获取buffer数。 ``` getPixelBytesNumber(): Promise; getPixelBytesNumber(callback: AsyncCallback): void; ``` 示例: ``` pixelmap.getPixelBytesNumber().then((num) => { console.info('TC_026 num is ' + num) expect(num == expectNum).assertTrue() done() }) ``` ### 8.getDensity image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何获取图片像素密度。 通过调用getDensity获取图片像素密度。 ``` getDensity():number; ``` 示例: ``` let getDensity = pixelmap.getDensity(); ``` ### 9.opacity image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何设置图片透明比率。 通过调用opacity设置图片透明比率。 ``` opacity(rate: number, callback: AsyncCallback): void; opacity(rate: number): Promise; ``` 示例: ``` async function () { await pixelMap.opacity(0.5); } ``` ### 10.createAlphaPixelmap image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何生成一个仅包含Alpha通道信息的pixelmap。 通过调用createAlphaPixelmap生成一个仅包含Alpha通道信息的pixelmap,可用于阴影效果。 ``` createAlphaPixelmap(): Promise; createAlphaPixelmap(callback: AsyncCallback): void; ``` 示例: ``` pixelMap.createAlphaPixelmap(async (err, alphaPixelMap) => {}) ``` ### 11.scale image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何根据输入的宽高对图片进行缩放。 通过调用scale对图片进行缩放。 ``` scale(x: number, y: number, callback: AsyncCallback): void; scale(x: number, y: number): Promise; ``` 示例: ``` await pixelMap.scale(2.0, 1.0); ``` ### 12.translate image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何根据输入的坐标对图片进行位置变换。 通过调用translate对图片进行位置变换。 ``` translate(x: number, y: number, callback: AsyncCallback): void; translate(x: number, y: number): Promise; ``` 示例: ``` await pixelMap.translate(3.0, 1.0); ``` ### 13.rotate image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何根据输入的角度对图片进行旋转。 通过调用rotate对图片进行旋转。 ``` rotate(angle: number, callback: AsyncCallback): void; rotate(angle: number): Promise; ``` 示例: ``` await pixelMap.rotate(90.0); ``` ### 14.flip image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何根据输入的条件对图片进行翻转。 通过调用flip对图片进行翻转。 ``` flip(horizontal: boolean, vertical: boolean, callback: AsyncCallback): void; flip(horizontal: boolean, vertical: boolean): Promise; ``` 示例: ``` await pixelMap.flip(false, true); ``` ### 15.crop image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何根据输入的尺寸对图片进行裁剪。 通过调用crop对图片进行裁剪。 ``` crop(region: Region, callback: AsyncCallback): void; crop(region: Region): Promise; ``` 示例: ``` await pixelMap.crop({ x: 0, y: 0, size: { height: 100, width: 100 } }); ``` ### 16.release image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何释放pixelmap实例。 通过调用release释放pixelmap。 1.使用create通过属性创建pixelmap。 ``` image.createPixelMap(color, opts, pixelmap =>{} ``` 2.使用release释放pixelmap实例 ``` pixelmap.release(()=>{ expect(true).assertTrue(); console.log('TC_027-1 suc'); done(); }) ``` ### 17.getImageInfo image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何根据特定数字获取图片信息。 ``` getImageInfo(index: number, callback: AsyncCallback): void; getImageInfo(callback: AsyncCallback): void; getImageInfo(index?: number): Promise; ``` 1.创建imagesource。 ``` const imageSourceApi = image.createImageSource('/sdcard/test.jpg') ``` 2.获取图片信息。 ``` imageSourceApi.getImageInfo((imageInfo) => { console.info('TC_045 imageInfo') expect(imageInfo !== null).assertTrue() done() }) ``` ### 18.getImageProperty image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何根据索引获取图像的指定属性键的值。 ``` getImageProperty(key:string, options?: GetImagePropertyOptions): Promise; getImageProperty(key:string, callback: AsyncCallback): void; ``` ### 19.modifyImageProperty image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何通过指定的键修改图片属性的值。 ``` modifyImageProperty(key: string, value: string): Promise; modifyImageProperty(key: string, value: string, callback: AsyncCallback): void; ``` ### 20.createPixelMap image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何创建pixelmap实例。 1.使用createImageSource创建图片源。 ``` const imageSourceApi = image.createImageSource('/sdcard/test.jpg') ``` 2.使用createPixelMap创建pixelmap ``` imageSourceApi.createPixelMap(decodingOptions, (pixelmap) => {}) ``` ### 21.updateData image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何更新图片数据源。 ``` updateData(buf: ArrayBuffer, isFinished: boolean, value: number, length: number): Promise; updateData(buf: ArrayBuffer, isFinished: boolean, value: number, length: number, callback: AsyncCallback): void; ``` 1.使用CreateIncrementalSource创建imagesource。 ``` const dataBuffer = new ArrayBuffer(96) const imageSourceIncrementalSApi = image.CreateIncrementalSource(dataBuffer) ``` 2.使用updateData更新图片源。 ``` imageSourceIncrementalSApi.updateData(array, false, (error, data) => {}) ``` ### 22.release image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何释放图片源实例。 ``` release(callback: AsyncCallback): void; release(): Promise; ``` ### 23.packing image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何压缩图片。 ``` packing(source: ImageSource, option: PackingOption, callback: AsyncCallback): void; packing(source: ImageSource, option: PackingOption): Promise; packing(source: PixelMap, option: PackingOption, callback: AsyncCallback): void; packing(source: PixelMap, option: PackingOption): Promise; ``` 1.使用createImageSource创建图片源。 ``` const imageSourceApi = image.createImageSource('/sdcard/test.png') ``` 2.创建packer实例。 ``` imagePackerApi.packing(imageSourceApi, packOpts).then((data) => {}) ``` ### 24.release image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何释放packer实例。 ``` release(callback: AsyncCallback): void; release(): Promise; ``` 1.使用createImagePacker创建packer实例。 ``` const imagePackerApi = image.createImagePacker() ``` 2.使用release释放packer实例。 ``` imagePackerApi.release() ``` ### 25.getReceivingSurfaceId image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何获取surface id供Camera或其他组件使用。 ``` getReceivingSurfaceId(): Promise; getReceivingSurfaceId(callback: AsyncCallback): void; ``` 示例: ``` receiver.getReceivingSurfaceId().then( id => { } ) ``` ### 26.readLatestImage image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何读取最新的图片。 ``` readLatestImage(callback: AsyncCallback): void; readLatestImage(): Promise; ``` 示例: ``` receiver.readLatestImage().then(img => { }) ``` ### 27.readNextImage image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何读取下一张图片。 ``` readNextImage(callback: AsyncCallback): void; readNextImage(): Promise; ``` 示例: ``` receiver.readNextImage().then(img => {}) ``` ### 28.on image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何接收图片时注册回调。 ``` on(type: 'imageArrival', callback: AsyncCallback): void; ``` 示例: ``` receiver.on('imageArrival', () => {}) ``` ### 29.release image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何释放receiver实例。 ``` release(callback: AsyncCallback): void; release(): Promise; ``` 1.使用createImageReceiver创建receiver实例。 ``` const imageReceiverApi = image.createImageReceiver() ``` 2.使用release释放packer实例。 ``` imageReceiverApi.release() ``` ### 30.getComponent image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何根据图像的组件类型从图像中获取组件缓存。 ``` getComponent(componentType: ComponentType, callback: AsyncCallback): void; getComponent(componentType: ComponentType): Promise; ``` 示例: ``` img.getComponent(4).then(component => { }) ``` ### 31.release image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何释放image实例。 ``` release(callback: AsyncCallback): void; release(): Promise; ``` ### 32.CreateIncrementalSource image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何创建增量imagesource。 ``` CreateIncrementalSource(buf: ArrayBuffer): ImageSource; CreateIncrementalSource(buf: ArrayBuffer, options?: SourceOptions): ImageSource; ``` 1.创建buffer。 ``` const data = new ArrayBuffer(96) ``` 2.使用CreateIncrementalSource创建imagesource。 ``` const imageSourceApi = image.CreateIncrementalSource(data) ``` ### 33.创建ImageSource实例 image提供了操作imagesource的接口,如创建、读取和删除,以下展示了如何通过不同方式创建imagesource。 1.通过文件路径创建imagesource。 ``` createImageSource(uri: string): ImageSource; createImageSource(uri: string, options: SourceOptions): ImageSource; ``` 示例: ``` const imageSourceApi = image.createImageSource('/sdcard/test.jpg'); ``` 2.通过fd创建imagesource。 ``` createImageSource(fd: number): ImageSource; createImageSource(fd: number, options: SourceOptions): ImageSource; ``` 示例: ``` const imageSourceApi = image.createImageSource(fd); ``` 3.通过buffer创建imagesource。 ``` createImageSource(buf: ArrayBuffer): ImageSource; createImageSource(buf: ArrayBuffer, options: SourceOptions): ImageSource; ``` 示例: ``` const data = new ArrayBuffer(112); const imageSourceApi = image.createImageSource(data); ``` ### 34.创建PixelMap实例 image提供了操作pixelmap的接口,如创建、读取和删除,以下展示了如何通过属性创建pixelmap。 ``` createPixelMap(colors: ArrayBuffer, options: InitializationOptions): Promise; createPixelMap(colors: ArrayBuffer, options: InitializationOptions, callback: AsyncCallback): void; ``` 1.设置属性。 ``` const Color = new ArrayBuffer(96) let opts = { alphaType: 0, editable: true, pixelFormat: 4, scaleMode: 1, size: { height: 2, width: 3 }, } ``` 2.调用createpixelmap通过属性创建pixelmap实例。 ``` image.createPixelMap(Color, opts) .then((pixelmap) => { expect(pixelmap !== null).assertTrue() console.info('Succeeded in creating pixelmap.') done() }) ``` ### 35.创建imagepacker实例 image提供了操作imagepacker的接口,以下展示了如何通过属性创建imagepacker。 ``` createImagePacker(): ImagePacker; ``` 1.创建imagesource。 ``` const imageSourceApi = image.createImageSource('/sdcard/test.png') ``` 2.创建imagepacker。 ``` const imagePackerApi = image.createImagePacker() ``` ### 36.创建imagereceiver实例 image提供了操作imagereceiver的接口,以下展示了如何通过属性创建imagereceiver。 ``` createImageReceiver(width: number, height: number, format: number, capacity: number): ImageReceiver; ``` ## 相关仓 [multimedia\_image\_framework](https://gitee.com/openharmony/multimedia_image_framework/blob/master/README_zh.md)