收藏
回答

孜孜不倦的我又来提问了

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug onShareAppMessage 客户端 6.0.3 2.3.2

- 当前 Bug 的表现(可附上截图)


- 预期表现


- 复现路径


- 提供一个最简复现 Demo

onShareAppMessage: function(e) {

    let that = this;

    console.log(e);

    if (e.target) {

        let videoId = e.target.dataset.videoId;

        let title = e.target.dataset.title;

        let cover = e.target.dataset.cover;

     

        console.log("videoId is " + videoId);

        console.log("title is " + title);

        console.log("cover is " + cover); // cover是一张网络图片(https,证书未过期)


        // ‘canvas’为前面创建的canvas标签的canvas-id属性值

        let canvasW = 640;

        let canvasH = 420;


        if (750 / 420 > 5 / 4) { // 长宽比大于5:4

            canvasW = 420 * 5 / 4;

        }


        // 将图片绘制到画布

        ctx.drawImage(cover, (750 - canvasW) / 2, 0, canvasW, canvasH, 0, 0, canvasW, canvasH)

        // draw()必须要用到,并且需要在绘制成功后导出图片

        ctx.draw(false,function(res) {

            //  导出图片

            wx.canvasToTempFilePath({

                width: canvasW,

                height: canvasH,

                destWidth: canvasW,

                destHeight: canvasH,

                canvasId: 'canvas',

                fileType: 'png',

                success: function(res) {

                    let img = res.tempFilePath;

                    console.log(img);

                    return {

                        title: title,

                        imageUrl: img,

                        path: "/pages/detail/detail?videoId=" + videoId

                    }

                }

            });

        });

    }

}


-提问:为什么canvasToTempFilePath里面的return的object不生效,分享出去的还是默认截屏的图片,而不是我裁剪好的图片

最后一次编辑于  2018-11-01
回答关注问题邀请回答
收藏

3 个回答

  • 2018-11-02

    加一个前置步骤,比方说:

    在点击分享的时候,先弹出一个弹窗(类似京东购物的分享),然后把canvas画出来,再进行分享(如果不想展示canvas,可把canvas画出来然后挪到屏幕外面去)

    2018-11-02
    有用
    回复 2
    • 光芒万丈
      光芒万丈
      2018-11-03

      大佬,怎么保证微信截图一定能截到弹框呢?被这个问题搞崩溃了

      2018-11-03
      回复
    • 2018-11-05回复光芒万丈

      你看看京东的那种操作就知道了。它是先把canvas画出来,点击按钮才保存的。而不是在保存前才去画canvas。

      2018-11-05
      回复
  • Cookie
    Cookie
    2018-11-01

    怎么改为同步?分享前裁剪要怎么做?

    2018-11-01
    有用
    回复 1
    • 光芒万丈
      光芒万丈
      2018-11-03

      大佬,解决了吗?

      2018-11-03
      回复
  • Mr.Right
    Mr.Right
    2018-11-01

    里面有异步方法

    2018-11-01
    有用
    回复 3
    • Cookie
      Cookie
      2018-11-01

      怎么用异步?你成功过?求指教

      2018-11-01
      回复
    • Mr.Right
      Mr.Right
      2018-11-01

      就是里面不能用异步啊,要在分享前处理好

      2018-11-01
      回复
    • Cookie
      Cookie
      2018-11-01回复Mr.Right

      坑爹啊,不能重写官方的API,修改为同步的方法QAQ

      2018-11-01
      回复
登录 后发表内容