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}