调用effectKit.createEffect.blur方法无法模糊下载的网络图片,请问该方法如何正确使用?

import http from '@ohos.net.http'; 
import image from '@ohos.multimedia.image'; 
import effectKit from '@ohos.effectKit'; 
@Component 
export struct TestBlurImage { 
  @State blurBackImage?: image.PixelMap = undefined 
  @State filter?: ColorFilter = undefined 
  aboutToAppear(): void { 
    this.getImage() 
  } 
  getImage() { 
    let httpRequest = http.createHttp(); 
    let requestUrl = 'https://assets-res-cn.c.huawei.com/operationcenter/myhuawei/cn/greater_china/img/6596682867f4d67efa8cf4ee.jpg'; 
    httpRequest.request(requestUrl) 
      .then((response) => { 
        if (response.responseCode == http.ResponseCode.OK) { 
          let imageData = response?.result as ArrayBuffer 
          let imageSource: image.ImageSource = image.createImageSource(imageData); 
          if (!imageSource) { 
            console.log('get image fail1') 
            return; 
          } 
          let opts: image.InitializationOptions = { 
            editable: true, 
            pixelFormat: 3, 
            size: { 
              height: 0, 
              width: 0 
            } 
          }; 
          imageSource?.createPixelMap(opts).catch((reason: Object) => { 
            console.log('createPixelMap fail 2') 
            return undefined; 
          }).then((pixelMap) => { 
            let radius = 50; 
            let headFilter = effectKit.createEffect(pixelMap); 
            if (headFilter != null) { 
              this.filter = headFilter.blur(radius); 
              this.blurBackImage = pixelMap; 
            } else { 
              console.log('get effect fail') 
            } 
          }) 
        } else { 
          console.log('get image fail 2') 
        } 
        // 当该请求使用完毕时,调用destroy方法主动销毁 
        httpRequest.destroy(); 
      }) 
  } 
  build() { 
    Column() { 
      Image(this.blurBackImage) 
        .height(204) 
        .width('100%') 
    } 
  } 
}
HarmonyOS
2024-04-27 23:05:39
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
elucky

需要调用getEffectPixelMap获取模糊完成后的图片,正确的使用方式如下:

this.filter = headFilter.blur(radius).getEffectPixelMap().then((result: PixelMap) => { 
  this.blurBackImage = result; 
})
分享
微博
QQ
微信
回复
2024-04-28 17:32:56
相关问题
请问Image控件是怎样设置网络图片
10369浏览 • 3回复 已解决
HarmonyOS Image组件无法显示网络图片
1104浏览 • 1回复 待解决
如何获取网络图片尺寸?
469浏览 • 1回复 待解决
网络判断,请问如何识别?
773浏览 • 1回复 待解决
如何保存网络图片到相册
738浏览 • 1回复 待解决
HarmonyOS 请求网络图片
410浏览 • 1回复 待解决
Image组件如何加载网络图片
2661浏览 • 1回复 待解决
HarmonyOS 数据类中方法无法调用
292浏览 • 1回复 待解决
HarmonyOS 网络图片加载不显示
102浏览 • 1回复 待解决
HarmonyOS 保存网络图片,图库更新
305浏览 • 1回复 待解决