js-apis-effectKit.md 9.8 KB
Newer Older
W
wangmiaoliang 已提交
1 2 3 4 5 6
# 图像效果

图像效果提供处理图像的一些基础能力,包括对当前图像的亮度调节、模糊化、灰度调节、智能取色等。

该模块提供以下图像效果相关的常用功能:

W
wangmiaoliang 已提交
7 8
- [Filter](#filter):效果链。
- [ColorPicker](#colorpicker):智能取色器。
W
wangmiaoliang 已提交
9 10

> **说明:**
W
wangmiaoliang 已提交
11
> 
W
wangmiaoliang 已提交
12 13 14 15 16 17 18 19
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

## 导入模块

```js
import effectKit from '@ohos.effectKit';
```

W
wangmiaoliang 已提交
20
## effectKit.createEffect
W
wangmiaoliang 已提交
21 22 23 24 25 26 27 28
createEffect(source: image.PixelMap): Filter

通过传入的PixelMap创建Filter实例。

**系统能力:** SystemCapability.Graphic.Graphic2D.Effectkit

**参数:**

W
wangmiaoliang 已提交
29 30
| 名称    | 类型               | 必填 | 说明     |
| ------- | ----------------- | ---- | -------- |
W
wangmiaoliang 已提交
31
| source  | [image.PixelMap](js-apis-image.md#pixelmap7) | 是   | image模块创建的PixelMap实例。   |
W
wangmiaoliang 已提交
32 33 34 35 36

**返回值:**

| 类型                             | 说明           |
| -------------------------------- | -------------- |
W
wangmiaoliang 已提交
37
| [Filter](#filter) | 返回不带任何效果的Filter链表的头节点,失败时返回null。 |
W
wangmiaoliang 已提交
38 39 40 41

**示例:**

```js
W
wangmiaoliang 已提交
42
import image from "@ohos.multimedia.image"
W
wangmiaoliang 已提交
43 44 45 46 47 48 49 50
const color = new ArrayBuffer(96);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts)
    .then((pixelmap) => {
        let headFilter = effectKit.createEffect(pixelmap)
    })
```

W
wangmiaoliang 已提交
51
## effectKit.createColorPicker
W
wangmiaoliang 已提交
52 53 54

createColorPicker(source: image.PixelMap): Promise\<ColorPicker>

W
wangmiaoliang 已提交
55
通过属性创建PixelMap,使用Promise异步回调。
W
wangmiaoliang 已提交
56 57 58 59 60

**系统能力:** SystemCapability.Graphic.Graphic2D.Effectkit

**参数:**

W
wangmiaoliang 已提交
61 62
| 名称     | 类型         | 必填 | 说明                       |
| -------- | ----------- | ---- | -------------------------- |
W
wangmiaoliang 已提交
63
| source   | [image.PixelMap](js-apis-image.md#pixelmap7) | 是   |  image模块创建的PixelMap实例 |
W
wangmiaoliang 已提交
64 65 66 67 68

**返回值:**

| 类型                   | 说明           |
| ---------------------- | -------------- |
W
wangmiaoliang 已提交
69
| Promisse\<[ColorPicker](#colorpicker)>  | Promise对象。返回当前创建的子窗口对象。 |
W
wangmiaoliang 已提交
70 71 72 73

**示例:**

```js
W
wangmiaoliang 已提交
74
import image from "@ohos.multimedia.image"
W
wangmiaoliang 已提交
75 76 77 78 79 80 81 82 83 84 85
const color = new ArrayBuffer(96);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts, (pixelmap) => {
    effectKit.createColorPicker(pixelMap).then(colorPicker => {
            console.info("color picker=" + colorPicker);
        })
        .catch(ex => console.error(".error=" + ex.toString()))
    })
})
```

W
wangmiaoliang 已提交
86
## effectKit.createColorPicker
W
wangmiaoliang 已提交
87

W
wangmiaoliang 已提交
88
createColorPicker(source: image.PixelMap, callback: AsyncCallback\<ColorPicker>): void
W
wangmiaoliang 已提交
89

W
wangmiaoliang 已提交
90
通过属性创建PixelMap,使用callback异步回调。
W
wangmiaoliang 已提交
91 92 93 94 95

**系统能力:** SystemCapability.Graphic.Graphic2D.Effectkit

**参数:**

W
wangmiaoliang 已提交
96 97
| 名称     | 类型                | 必填 | 说明                       |
| -------- | ------------------ | ---- | -------------------------- |
W
wangmiaoliang 已提交
98 99
| source   | [image.PixelMap](js-apis-image.md#pixelmap7) | 是  | BGRA_8888格式的颜色数组。  |
| callback | AsyncCallback\<[ColorPicker](#colorpicker)> | 是  | 回调函数,返回ColorPicker。 |
W
wangmiaoliang 已提交
100 101 102 103

**示例:**

```js
W
wangmiaoliang 已提交
104
import image from "@ohos.multimedia.image"
W
wangmiaoliang 已提交
105 106 107 108 109 110 111 112 113 114 115 116 117
const color = new ArrayBuffer(96);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts, (pixelmap) => {
    effectKit.createColorPicker(pixelMap, (error, colorPicker) ) {
        if(error) {
            console.log('create color picker failed.');
        } else {
            console.log('create color picker succeeded.');
        }
    })
})
```

W
wangmiaoliang 已提交
118
## Color
W
wangmiaoliang 已提交
119 120 121

颜色类,用于保存取色的结果。

W
wangmiaoliang 已提交
122
**系统能力:** SystemCapability.Graphic.Graphic2D.Effectkit
W
wangmiaoliang 已提交
123 124 125

| 名称   | 类型   | 可读 | 可写 | 说明              |
| ------ | ----- | ---- | ---- | ---------------- |
W
wangmiaoliang 已提交
126 127 128 129
| red   | number | 是   | 否   | 红色分量值。           |
| green | number | 是   | 否   | 绿色分量值。           |
| blue  | number | 是   | 否   | 蓝色分量值。           |
| alpha | number | 是   | 否   | 透明通道分量值。       |
W
wangmiaoliang 已提交
130

W
wangmiaoliang 已提交
131
## ColorPicker
W
wangmiaoliang 已提交
132

W
wangmiaoliang 已提交
133
取色类,用于从一张图像数据中获取它的主要颜色。在调用ColorPicker的方法前,需要先通过[createColorPicker](#effectkitcreatecolorpicker)创建一个ColorPicker实例。
W
wangmiaoliang 已提交
134

W
wangmiaoliang 已提交
135
### getMainColor
W
wangmiaoliang 已提交
136

W
wangmiaoliang 已提交
137
getMainColor(): Promise\<Color>
W
wangmiaoliang 已提交
138

W
wangmiaoliang 已提交
139
读取图像主色的颜色值,结果写入[Color](#color)里,使用Promise异步回调。
W
wangmiaoliang 已提交
140 141 142 143 144 145 146

**系统能力:** SystemCapability.Graphic.Graphic2D.Effectkit

**返回值:**

| 类型           | 说明                                            |
| :------------- | :---------------------------------------------- |
W
wangmiaoliang 已提交
147
| Promise\<[Color](#color)> | Promise实例,用于获取结果,失败时返回错误信息。 |
W
wangmiaoliang 已提交
148 149 150 151

**示例:**

```js
W
wangmiaoliang 已提交
152 153 154
colorPicker.getMainColor().then(color => {
    console.log('get main color succeeded.')
    console.info("color[ARGB]=" + color.alpha "," + color.red + "," + color.green + "," + color.blue);
W
wangmiaoliang 已提交
155
}).catch(error => {
W
wangmiaoliang 已提交
156
    console.log('get main color failed.');
W
wangmiaoliang 已提交
157 158 159
})
```

W
wangmiaoliang 已提交
160
### getMainColorSync
W
wangmiaoliang 已提交
161

W
wangmiaoliang 已提交
162
getMainColorSync(): Color
W
wangmiaoliang 已提交
163

W
wangmiaoliang 已提交
164
读取图像主色的颜色值,结果写入[Color](#color)里,使用同步方式返回。
W
wangmiaoliang 已提交
165 166 167 168 169 170 171

**系统能力:** SystemCapability.Graphic.Graphic2D.Effectkit

**返回值:**

| 类型     | 说明                                  |
| :------- | :----------------------------------- |
W
wangmiaoliang 已提交
172
| [Color](#color)    | Color实例,用于获取结果,失败时返回null。 |
W
wangmiaoliang 已提交
173 174 175 176 177 178 179 180

**示例:**

```js
let color = colorPicker.getMainColorSync()
console.log('get main color =' + color)
```

W
wangmiaoliang 已提交
181
## Filter
W
wangmiaoliang 已提交
182

W
wangmiaoliang 已提交
183
图像效果类,用于将指定的效果添加到输入图像中。在调用Filter的方法前,需要先通过[createEffect](#effectkitcreateeffect)创建一个Filter实例。
W
wangmiaoliang 已提交
184

W
wangmiaoliang 已提交
185
### blur
W
wangmiaoliang 已提交
186 187 188 189 190 191 192 193 194 195 196

blur(radius: number): Filter

将模糊效果添加到效果链表中,结果返回效果链表的头节点。

**系统能力:** SystemCapability.Graphic.Graphic2D.Effectkit

**参数:**

| 参数名 | 类型        | 必填 | 说明                                                         |
| ------ | ----------- | ---- | ------------------------------------------------------------ |
W
wangmiaoliang 已提交
197
|  radius   | number | 是   | 模糊半径,单位是像素。模糊效果与所设置的值成正比,值越大效果越明显。 |
W
wangmiaoliang 已提交
198 199 200 201 202

**返回值:**

| 类型           | 说明                                            |
| :------------- | :---------------------------------------------- |
W
wangmiaoliang 已提交
203
| [Filter](#filter) | 返回效果链表头。 |
W
wangmiaoliang 已提交
204 205 206 207

**示例:**

```js
W
wangmiaoliang 已提交
208
import image from "@ohos.multimedia.image"
W
wangmiaoliang 已提交
209 210 211 212 213 214 215 216 217 218 219 220
const color = new ArrayBuffer(96);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts)
    .then((pixelmap) => {
        let radius = 5;
        let headFilter = effectKit.createEffect(pixelmap)
        if (headFilter != null) {
            headFilter.blur(radius)
        }
    })
```

W
wangmiaoliang 已提交
221
### brightness
W
wangmiaoliang 已提交
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238

brightness(bright: number): Filter

将高亮效果添加到效果链表中,结果返回效果链表的头节点。

**系统能力:** SystemCapability.Graphic.Graphic2D.Effectkit

**参数:**

| 参数名 | 类型        | 必填 | 说明                                                         |
| ------ | ----------- | ---- | ------------------------------------------------------------ |
|  bright   | number | 是   | 高亮程度,取值范围在0-1之间,取值为0时图像保持不变。 |

**返回值:**

| 类型           | 说明                                            |
| :------------- | :---------------------------------------------- |
W
wangmiaoliang 已提交
239
| [Filter](#filter) | 返回效果链表头。 |
W
wangmiaoliang 已提交
240 241 242 243

**示例:**

```js
W
wangmiaoliang 已提交
244
import image from "@ohos.multimedia.image"
W
wangmiaoliang 已提交
245 246 247 248 249 250 251 252 253 254 255 256
const color = new ArrayBuffer(96);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts)
    .then((pixelmap) => {
        let bright = 0.5;
        let headFilter = effectKit.createEffect(pixelmap)
        if (headFilter != null) {
            headFilter.brightness(bright)
        }
    })
```

W
wangmiaoliang 已提交
257
### grayscale
W
wangmiaoliang 已提交
258 259 260 261 262 263 264 265 266 267 268

grayscale(): Filter

将灰度效果添加到效果链表中,结果返回效果链表的头节点。

**系统能力:** SystemCapability.Graphic.Graphic2D.Effectkit

**返回值:**

| 类型           | 说明                                            |
| :------------- | :---------------------------------------------- |
W
wangmiaoliang 已提交
269
| Filter | 返回效果链表头。 |
W
wangmiaoliang 已提交
270 271 272 273

**示例:**

```js
W
wangmiaoliang 已提交
274
import image from "@ohos.multimedia.image"
W
wangmiaoliang 已提交
275 276 277 278 279 280
const color = new ArrayBuffer(96);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts)
    .then((pixelmap) => {
        let headFilter = effectKit.createEffect(pixelmap)
        if (headFilter != null) {
W
wangmiaoliang 已提交
281
            headFilter.grayscale()
W
wangmiaoliang 已提交
282 283 284 285
        }
    })
```

W
wangmiaoliang 已提交
286
### getPixelMap
W
wangmiaoliang 已提交
287

W
wangmiaoliang 已提交
288
getPixelMap(): image.PixelMap
W
wangmiaoliang 已提交
289

W
wangmiaoliang 已提交
290
获取已添加链表效果的源图像的image.PixelMap。
W
wangmiaoliang 已提交
291 292 293 294 295 296 297

**系统能力:** SystemCapability.Graphic.Graphic2D.Effectkit

**返回值:**

| 类型           | 说明                                            |
| :------------- | :---------------------------------------------- |
W
wangmiaoliang 已提交
298
| [image.PixelMap](js-apis-image.md#pixelmap7) | 已添加链表效果的源图像的image.PixelMap。 |
W
wangmiaoliang 已提交
299 300 301 302

**示例:**

```js
W
wangmiaoliang 已提交
303
import image from "@ohos.multimedia.image"
W
wangmiaoliang 已提交
304 305 306 307 308 309 310
const color = new ArrayBuffer(96);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts)
    .then((pixelmap) => {
        let pixel = effectKit.createEffect(pixelmap).grayscale().getPixelMap()
    })
```