• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.effectKit (图像效果)
2
3图像效果提供处理图像的一些基础能力,包括对当前图像的亮度调节、模糊化、灰度调节、智能取色等。
4
5该模块提供以下图像效果相关的常用功能:
6
7- [Filter](#filter):效果类,用于添加指定效果到图像源。
8- [Color](#color):颜色类,用于保存取色的结果。
9- [ColorPicker](#colorpicker):智能取色器。
10
11> **说明:**
12>
13> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
14
15## 导入模块
16
17```js
18import effectKit from '@ohos.effectKit';
19```
20
21## effectKit.createEffect
22createEffect(source: image.PixelMap): Filter
23
24通过传入的PixelMap创建Filter实例。
25
26**系统能力:** SystemCapability.Multimedia.Image.Core
27
28**参数:**
29
30| 参数名    | 类型               | 必填 | 说明     |
31| ------- | ----------------- | ---- | -------- |
32| source  | [image.PixelMap](js-apis-image.md#pixelmap7) | 是   | image模块创建的PixelMap实例。可通过图片解码或直接创建获得,具体可见[图片开发指导](../../media/image-overview.md)。   |
33
34**返回值:**
35
36| 类型                             | 说明           |
37| -------------------------------- | -------------- |
38| [Filter](#filter) | 返回不带任何效果的Filter链表的头节点,失败时返回null。 |
39
40**示例:**
41
42```js
43import image from "@ohos.multimedia.image";
44
45const color = new ArrayBuffer(96);
46let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
47image.createPixelMap(color, opts).then((pixelMap) => {
48  let headFilter = effectKit.createEffect(pixelMap);
49})
50```
51
52## effectKit.createColorPicker
53
54createColorPicker(source: image.PixelMap): Promise\<ColorPicker>
55
56通过传入的PixelMap创建ColorPicker实例,使用Promise异步回调。
57
58**系统能力:** SystemCapability.Multimedia.Image.Core
59
60**参数:**
61
62| 参数名     | 类型         | 必填 | 说明                       |
63| -------- | ----------- | ---- | -------------------------- |
64| source   | [image.PixelMap](js-apis-image.md#pixelmap7) | 是   |  image模块创建的PixelMap实例。可通过图片解码或直接创建获得,具体可见[图片开发指导](../../media/image-overview.md)。 |
65
66**返回值:**
67
68| 类型                   | 说明           |
69| ---------------------- | -------------- |
70| Promise\<[ColorPicker](#colorpicker)>  | Promise对象。返回创建的ColorPicker实例。 |
71
72**示例:**
73
74```js
75import image from "@ohos.multimedia.image";
76
77const color = new ArrayBuffer(96);
78let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
79image.createPixelMap(color, opts).then((pixelMap) => {
80  effectKit.createColorPicker(pixelMap).then(colorPicker => {
81    console.info("color picker=" + colorPicker);
82  }).catch(ex => console.error(".error=" + ex.toString()))
83})
84```
85
86## effectKit.createColorPicker
87
88createColorPicker(source: image.PixelMap, callback: AsyncCallback\<ColorPicker>): void
89
90通过传入的PixelMap创建ColorPicker实例,使用callback异步回调。
91
92**系统能力:** SystemCapability.Multimedia.Image.Core
93
94**参数:**
95
96| 参数名     | 类型                | 必填 | 说明                       |
97| -------- | ------------------ | ---- | -------------------------- |
98| source   | [image.PixelMap](js-apis-image.md#pixelmap7) | 是  |image模块创建的PixelMap实例。可通过图片解码或直接创建获得,具体可见[图片开发指导](../../media/image-overview.md)。  |
99| callback | AsyncCallback\<[ColorPicker](#colorpicker)> | 是  | 回调函数。返回创建的ColorPicker实例。 |
100
101**示例:**
102
103```js
104import image from "@ohos.multimedia.image";
105
106const color = new ArrayBuffer(96);
107let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
108image.createPixelMap(color, opts).then((pixelMap) => {
109  effectKit.createColorPicker(pixelMap, (error, colorPicker) => {
110    if (error) {
111      console.log('Failed to create color picker.');
112    } else {
113      console.log('Succeeded in creating color picker.');
114    }
115  })
116})
117```
118
119## Color
120
121颜色类,用于保存取色的结果。
122
123**系统能力:** SystemCapability.Multimedia.Image.Core
124
125| 名称   | 类型   | 可读 | 可写 | 说明              |
126| ------ | ----- | ---- | ---- | ---------------- |
127| red   | number | 是   | 否   | 红色分量值。           |
128| green | number | 是   | 否   | 绿色分量值。           |
129| blue  | number | 是   | 否   | 蓝色分量值。           |
130| alpha | number | 是   | 否   | 透明通道分量值。       |
131
132## ColorPicker
133
134取色类,用于从一张图像数据中获取它的主要颜色。在调用ColorPicker的方法前,需要先通过[createColorPicker](#effectkitcreatecolorpicker)创建一个ColorPicker实例。
135
136### getMainColor
137
138getMainColor(): Promise\<Color>
139
140读取图像主色的颜色值,结果写入[Color](#color)里,使用Promise异步回调。
141
142**系统能力:** SystemCapability.Multimedia.Image.Core
143
144**返回值:**
145
146| 类型           | 说明                                            |
147| :------------- | :---------------------------------------------- |
148| Promise\<[Color](#color)> | Promise对象。返回图像主色对应的颜色值,失败时返回错误信息。 |
149
150**示例:**
151
152```js
153colorPicker.getMainColor().then(color => {
154    console.log('Succeeded in getting main color.');
155    console.info(`color[ARGB]=${color.alpha},${color.red},${color.green},${color.blue}`);
156}).catch(error => {
157    console.log('Failed to get main color.');
158})
159```
160
161### getMainColorSync
162
163getMainColorSync(): Color
164
165读取图像主色的颜色值,结果写入[Color](#color)里,使用同步方式返回。
166
167**系统能力:** SystemCapability.Multimedia.Image.Core
168
169**返回值:**
170
171| 类型     | 说明                                  |
172| :------- | :----------------------------------- |
173| [Color](#color)    | Color实例,即图像主色对应的颜色值,失败时返回null。 |
174
175**示例:**
176
177```js
178let color = colorPicker.getMainColorSync();
179console.log('get main color =' + color);
180```
181![zh-ch_image_Main_Color.png](figures/zh-ch_image_Main_Color.png)
182
183## Filter
184
185图像效果类,用于将指定的效果添加到输入图像中。在调用Filter的方法前,需要先通过[createEffect](#effectkitcreateeffect)创建一个Filter实例。
186
187### blur
188
189blur(radius: number): Filter
190
191将模糊效果添加到效果链表中,结果返回效果链表的头节点。
192
193**系统能力:** SystemCapability.Multimedia.Image.Core
194
195**参数:**
196
197| 参数名 | 类型        | 必填 | 说明                                                         |
198| ------ | ----------- | ---- | ------------------------------------------------------------ |
199|  radius   | number | 是   | 模糊半径,单位是像素。模糊效果与所设置的值成正比,值越大效果越明显。 |
200
201**返回值:**
202
203| 类型           | 说明                                            |
204| :------------- | :---------------------------------------------- |
205| [Filter](#filter) | 返回已添加的图像效果。 |
206
207**示例:**
208
209```js
210import image from "@ohos.multimedia.image";
211
212const color = new ArrayBuffer(96);
213let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } };
214image.createPixelMap(color, opts).then((pixelMap) => {
215  let radius = 5;
216  let headFilter = effectKit.createEffect(pixelMap);
217  if (headFilter != null) {
218    headFilter.blur(radius);
219  }
220})
221```
222![zh-ch_image_Add_Blur.png](figures/zh-ch_image_Add_Blur.png)
223
224### brightness
225
226brightness(bright: number): Filter
227
228将高亮效果添加到效果链表中,结果返回效果链表的头节点。
229
230**系统能力:** SystemCapability.Multimedia.Image.Core
231
232**参数:**
233
234| 参数名 | 类型        | 必填 | 说明                                                         |
235| ------ | ----------- | ---- | ------------------------------------------------------------ |
236|  bright   | number | 是   | 高亮程度,取值范围在0-1之间,取值为0时图像保持不变。 |
237
238**返回值:**
239
240| 类型           | 说明                                            |
241| :------------- | :---------------------------------------------- |
242| [Filter](#filter) | 返回已添加的图像效果。 |
243
244**示例:**
245
246```js
247import image from "@ohos.multimedia.image";
248
249const color = new ArrayBuffer(96);
250let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } };
251image.createPixelMap(color, opts).then((pixelMap) => {
252  let bright = 0.5;
253  let headFilter = effectKit.createEffect(pixelMap);
254  if (headFilter != null) {
255    headFilter.brightness(bright);
256  }
257})
258```
259![zh-ch_image_Add_Brightness.png](figures/zh-ch_image_Add_Brightness.png)
260
261### grayscale
262
263grayscale(): Filter
264
265将灰度效果添加到效果链表中,结果返回效果链表的头节点。
266
267**系统能力:** SystemCapability.Multimedia.Image.Core
268
269**返回值:**
270
271| 类型           | 说明                                            |
272| :------------- | :---------------------------------------------- |
273| [Filter](#filter) | 返回已添加的图像效果。 |
274
275**示例:**
276
277```js
278import image from "@ohos.multimedia.image";
279
280const color = new ArrayBuffer(96);
281let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } };
282image.createPixelMap(color, opts).then((pixelMap) => {
283  let headFilter = effectKit.createEffect(pixelMap);
284  if (headFilter != null) {
285    headFilter.grayscale();
286  }
287})
288```
289![zh-ch_image_Add_Grayscale.png](figures/zh-ch_image_Add_Grayscale.png)
290
291### getPixelMap
292
293getPixelMap(): [image.PixelMap](js-apis-image.md#pixelmap7)
294
295获取已添加链表效果的源图像的image.PixelMap296
297**系统能力:** SystemCapability.Multimedia.Image.Core
298
299**返回值:**
300
301| 类型           | 说明                                            |
302| :------------- | :---------------------------------------------- |
303| [image.PixelMap](js-apis-image.md#pixelmap7) | 已添加效果的源图像的image.PixelMap。 |
304
305**示例:**
306
307```js
308import image from "@ohos.multimedia.image";
309
310const color = new ArrayBuffer(96);
311let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } };
312image.createPixelMap(color, opts).then((pixelMap) => {
313  let pixel = effectKit.createEffect(pixelMap).grayscale().getPixelMap();
314})
315```
316