介绍
本示例介绍图片AI抠图案例的使用:通过Image.enableAnalyzer(true)实现长按图片抠图并拖拽/复制到其他应用中。
效果图预览
使用说明
- 选中需要AI抠图的图片。
- 长按需要被抠图的元素并拖拽。
- 元素被AI抠图成功并可以拖拽。
实现思路
场景:通过Image.enableAnalyzer()实现图片AI抠图
-
Image.enableAnalyzer()可以设置组件支持AI分析,设置为true时,组件可进行AI分析。
-
支持分析的图像要求是静态非矢量图,即svg、gif等图像类型不支持分析,仅支持传入PixelMap进行分析,目前仅支持RGBA_8888类型,源码参考, 因此需要定义图片转成PixelMap且为RGBA_8888类型方法:
// 使图片转成PixelMap且为RGBA_8888类型
private async getPixmapFromMedia(resource: Resource) {
let unit8Array = await getContext(this)?.resourceManager?.getMediaContent({
bundleName: resource.bundleName,
moduleName: resource.moduleName,
id: resource.id
})
let imageSource = image.createImageSource(unit8Array.buffer.slice(0, unit8Array.buffer.byteLength));
let createPixelMap: image.PixelMap = await imageSource.createPixelMap({
desiredPixelFormat: image.PixelMapFormat.RGBA_8888
})
await imageSource.release();
return createPixelMap;
}
- 通过Image.enableAnalyzer(true)开启Image组件的AI分析能力,通过调用getPixmapFromMedia()方法,将传入的jpg图片类型转成支持AI抠图的PixelMap且为RGBA_8888类型, 当用户长按拖拽图片中元素,即可实现AI抠图并拖拽/复制到其他应用中。
build() {
Swiper() {
ForEach(this.imagePixelMapList, (item: image.PixelMap) => {
/* 性能知识点:当数据量较大时,推荐使用懒加载加载数据。
* 参考使用数据懒加载文章:
* https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/performance/arkts-performance-improvement-recommendation.md/
*/
Image(item)
.enableAnalyzer(true) // 开启Image组件的AI分析能力,目前支持分析PixelMap且为RGBA_8888类型的图片
})
}
}
高性能知识点
不涉及
工程结构&模块类型
imageenableanalyzer // har类型
|---src/main/ets/view
| |---ImageView.ets // 视图层-主页
模块依赖
har包-common库中UX标准
@ohos/routermodule(动态路由)
参考资料
为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05
《鸿蒙开发学习手册》:
如何快速入门:https://qr21.cn/FV7h05
- 基本概念
- 构建第一个ArkTS应用
- ……
开发基础知识:https://qr21.cn/FV7h05
- 应用基础知识
- 配置文件
- 应用数据管理
- 应用安全管理
- 应用隐私保护
- 三方应用调用管控机制
- 资源分类与访问
- 学习ArkTS语言
- ……
基于ArkTS 开发:https://qr21.cn/FV7h05
- Ability开发
- UI开发
- 公共事件与通知
- 窗口管理
- 媒体
- 安全
- 网络与链接
- 电话服务
- 数据管理
- 后台任务(Background Task)管理
- 设备管理
- 设备使用信息统计
- DFX
- 国际化开发
- 折叠屏系列
- ……
鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH
鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH
1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向