• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import { image } from '@kit.ImageKit'
17
18/**
19 * 开启图像AI分析
20 */
21@Entry
22@Component
23struct ImageExample4 {
24  @State imagePixelMap: image.PixelMap | undefined = undefined
25  private aiController: ImageAnalyzerController = new ImageAnalyzerController()
26  private options: ImageAIOptions = {
27    types: [ImageAnalyzerType.SUBJECT, ImageAnalyzerType.TEXT],
28    aiController: this.aiController
29  }
30
31  async aboutToAppear() {
32    this.imagePixelMap = await this.getPixmapFromMedia($r('app.media.app_icon'))
33  }
34
35  build() {
36    Column() {
37      Image(this.imagePixelMap, this.options)
38        .enableAnalyzer(true)
39        .width(200)
40        .height(200)
41        .margin({bottom:10})
42      Button('getTypes')
43        .width(80)
44        .height(80)
45        .onClick(() => {
46          this.aiController.getImageAnalyzerSupportTypes()
47        })
48    }
49  }
50  private async getPixmapFromMedia(resource: Resource) {
51    let unit8Array = await getContext(this)?.resourceManager?.getMediaContent({
52      bundleName: resource.bundleName,
53      moduleName: resource.moduleName,
54      id: resource.id
55    })
56    let imageSource = image.createImageSource(unit8Array.buffer.slice(0, unit8Array.buffer.byteLength))
57    let createPixelMap: image.PixelMap = await imageSource.createPixelMap({
58      desiredPixelFormat: image.PixelMapFormat.RGBA_8888
59    })
60    await imageSource.release()
61    return createPixelMap
62  }
63}