鸿蒙OH实战开发:图片拖拽AI抠图案例


📚往期学习笔录📝:

📝 鸿蒙应用开发与鸿蒙系统开发哪个更有前景?

📝 嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~

📝 对于大前端开发来说,转鸿蒙开发究竟是福还是祸?

📝 鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?

📝 记录一场鸿蒙开发岗位面试经历~

📝 持续更新中……


介绍

本示例介绍图片AI抠图案例的使用:通过 Image.enableAnalyzer(true) 实现长按图片抠图并拖拽/复制到其他应用中。

效果图预览

使用说明

  1. 选中需要AI抠图的图片。
  2. 长按需要被抠图的元素并拖拽。
  3. 元素被AI抠图成功并可以拖拽。

实现思路

场景:通过Image.enableAnalyzer()实现图片AI抠图
  • Image.enableAnalyzer()可以设置组件支持AI分析,设置为true时,组件可进行AI分析。

  • 支持分析的图像要求是静态非矢量图,即svg、gif等图像类型不支持分析,仅支持传入PixelMap进行分析,目前仅支持RGBA_8888类型, ImageView.ets ,因此需要定义图片转成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://gitee.com/harmonyos-cases/cases/blob/master/docs/performance/arkts-performance-improvement-recommendation.md
       */
      Image(item)
        .enableAnalyzer(true) // 开启Image组件的AI分析能力,目前支持分析PixelMap且为RGBA_8888类型的图片
    })
  }
}

高性能知识点

不涉及

工程结构&模块类型

   imageenableanalyzer                             // har类型
   |---src/main/ets/view
   |   |---ImageView.ets                           // 视图层-主页 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值