收藏
回答

鸿蒙微信分享base64的图片失败

https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/ohos.html

使用base64做分享时,显示参数非法

最新sdk

"@tencent/wechat_open_sdk": "^1.0.11"

官方demo

"发送Image消息(data)"asyncletthisletawait'app.media.test0'letasArrayBufferletleteditabletruethisawaitconstletformat'image/jpeg'quality30this(data: ArrayBuffer) =>letnewlet'base64'0letnewletnewthisthisthisas'80%')

回答关注问题邀请回答
收藏

1 个回答

  • 余生
    余生
    2025-04-25
    Button("发送Image消息(data)").onClick(async () => {
      let resourceManager = getContext(this).resourceManager
      let imageArray = await resourceManager.getMediaContent($r('app.media.test0'));
      let pixelBuffer = imageArray.buffer as ArrayBuffer;
      let imageResource = image.createImageSource(pixelBuffer);
      let opts: image.DecodingOptions = { editable: true }
    
      this.pixelMap = await imageResource.createPixelMap(opts);
    
      const imagePackerApi: image.ImagePacker = image.createImagePacker();
      let packOpts: image.PackingOption = { format: 'image/jpeg', quality: 30 };
      imagePackerApi.packing(this.pixelMap, packOpts).then((data: ArrayBuffer) => {
        let imageObject = new wxopensdk.WXImageObject
    
        let buf: buffer.Buffer = buffer.from(data);
        imageObject.imageData = buf.toString('base64', 0, buf.length);
    
        let mediaMessage = new wxopensdk.WXMediaMessage()
        mediaMessage.mediaObject = imageObject
    
        let req = new wxopensdk.SendMessageToWXReq()
        req.scene = this.currentScene
        req.message = mediaMessage
    
       this.wxApi.sendReq(getContext(this) as common.UIAbilityContext, req)
      })
    }).width('80%')
    
    2025-04-25
    有用
    回复 1
    • 还有您我
      还有您我
      2025-05-12
      遇到同样问题,现在解决了吗?
      2025-05-12
      回复
登录 后发表内容