微信小程序图片裁剪使用canvas的坑

做微信小程序裁剪功能的时候,发现使用wx.canvasToTempFilePath的时候,一直裁剪出的是一张空白图片。找了好久的原因,我以为是ctx.draw的没成功就做了裁剪的原因,然后我这样做了

ctx.draw(false,wepy.canvasToTempFilePath({
            canvasId: 'myCanvas',
            x: canvasL,
            y: canvasT,
            width: canvasW,
            height: canvasH,
            destWidth: canvasW,
            destHeight: canvasH,
            fileType: this.imgtype,
            success: (res) => {
              wepy.hideLoading()
              // 成功获得地址的地方
              console.log(res.tempFilePath)
              wepy.setStorage({
                key: 'tempFilePaths',
                data: [res.tempFilePath],
                success: () => {
                  wepy.navigateTo({
                    url: 'picture'
                  })
                }
              })
              // wepy.previewImage({
              //   current: '', // 当前显示图片的http链接
              //   urls: [res.tempFilePath] // 需要预览的图片http链接列表
              // })
            }
          }))

在ctx.draw的回调函数里面执行wx.canvasToTempFilePath,稍微有了点希望,第一次是空白图片第二次才正常,后来发现可以用定时器解决这个问题!!!

ctx.drawImage(this.imageSrc)
ctx.draw(false)
setTimeout(() => {
    wepy.canvasToTempFilePath({
    canvasId: 'myCanvas',
    x: canvasL,
    y: canvasT,
    width: canvasW,
    height: canvasH,
    destWidth: canvasW,
    destHeight: canvasH,
    fileType: this.imgtype,
    success: (res) => {
        wepy.hideLoading()
        // 成功获得地址的地方
        console.log(res.tempFilePath)
        wepy.setStorage({
        key: 'tempFilePaths',
        data: [res.tempFilePath],
        success: () => {
            wepy.navigateTo({
            url: 'picture'
            })
        }
        })
        // wepy.previewImage({
        //   current: '', // 当前显示图片的http链接
        //   urls: [res.tempFilePath] // 需要预览的图片http链接列表
        // })
    }
    })
}, 500)

成功解决!!!

你可能感兴趣的:(微信小程序图片裁剪使用canvas的坑)