純血鴻蒙APP實戰(zhàn)開發(fā)——圖片拖拽AI摳圖案例

介紹

本示例介紹圖片AI摳圖案例的使用:通過 Image.enableAnalyzer(true) 實現(xiàn)長按圖片摳圖并拖拽/復(fù)制到其他應(yīng)用中。

效果圖預(yù)覽

使用說明

  1. 選中需要AI摳圖的圖片。
  2. 長按需要被摳圖的元素并拖拽。
  3. 元素被AI摳圖成功并可以拖拽。

實現(xiàn)思路

場景:通過Image.enableAnalyzer()實現(xiàn)圖片AI摳圖

  • Image.enableAnalyzer()可以設(shè)置組件支持AI分析,設(shè)置為true時,組件可進行AI分析。

  • 支持分析的圖像要求是靜態(tài)非矢量圖,即svg、gif等圖像類型不支持分析,僅支持傳入PixelMap進行分析,目前僅支持RGBA_8888類型,ImageView.ets
    因此需要定義圖片轉(zhuǎn)成PixelMap且為RGBA_8888類型方法:

// 使圖片轉(zhuǎn)成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分析能力,通過調(diào)用getPixmapFromMedia()方法,將傳入的jpg圖片類型轉(zhuǎn)成支持AI摳圖的PixelMap且為RGBA_8888類型,

當用戶長按拖拽圖片中元素,即可實現(xiàn)AI摳圖并拖拽/復(fù)制到其他應(yīng)用中。

build() {
  Swiper() {
    ForEach(this.imagePixelMapList, (item: image.PixelMap) => {
      /* 性能知識點:當數(shù)據(jù)量較大時,推薦使用懶加載加載數(shù)據(jù)。
       * 參考使用數(shù)據(jù)懶加載文章:
       * https://gitee.com/harmonyos-cases/cases/blob/master/docs/performance/arkts-performance-improvement-recommendation.md
       */
      Image(item)
        .enableAnalyzer(true) // 開啟Image組件的AI分析能力,目前支持分析PixelMap且為RGBA_8888類型的圖片
    })
  }
}

高性能知識點

不涉及

工程結(jié)構(gòu)&模塊類型

   imageenableanalyzer                             // har類型
   |---src/main/ets/view
   |   |---ImageView.ets                           // 視圖層-主頁 

寫在最后

  • 如果你覺得這篇內(nèi)容對你還蠻有幫助,我想邀請你幫我三個小忙:
  • 點贊,轉(zhuǎn)發(fā),有你們的 『點贊和評論』,才是我創(chuàng)造的動力。
  • 關(guān)注小編,同時可以期待后續(xù)文章ing??,不定期分享原創(chuàng)知識。
  • 想要獲取更多完整鴻蒙最新學(xué)習(xí)知識點,請移步前往小編:https://gitee.com/MNxiaona/733GH/blob/master/jianshu
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容