使用wx.createCanvasContext 画布做签名,本地测试可以线上就黑图,请问哪里问题?
发布于 6 年前 作者 gang34 4181 次浏览 来自 官方Issues

使用wx.createCanvasContext 初始化画布做签名,然后用wx.canvasToTempFilePath导出签名图片,在微信开发真工具中调试一切正常,但是发布线上之后导出的图片是纯黑的,我贴一下js文件里面的代码,麻烦帮我看看哪里问题。

 /**
   * 生命周期函数--监听页面显示
   */
  onShowfunction () {
 //初始化canvas
    const context = wx.createCanvasContext('firstCanvas')
    this.setData({
      context: context
    })
    context.draw()
  },
 // 开始触摸
 bindtouchstartfunction(e{
  this.data.context.moveTo(e.changedTouches[0].x, e.changedTouches[0].y)
  },
   
 // 触摸移动
 bindtouchmovefunction(e{
  this.data.context.lineTo(e.changedTouches[0].x, e.changedTouches[0].y);
  this.data.context.stroke();
  this.data.context.draw(true);
  this.data.context.moveTo(e.changedTouches[0].x, e.changedTouches[0].y);
  },

  /**清空画布 */
  clearfunction() {
    this.data.context.draw();
    },
    /**导出图片 */
    exportfunction() {
    const that = this;
    let params = {
      wxapp_id: App.getWxappId(),
      token: wx.getStorageSync('token')
    };
    this.data.context.draw(false, wx.canvasToTempFilePath({
     x0,
     y0,
     fileType'jpg',
     canvasId'firstCanvas',
     success(res) {
      const {
        tempFilePath
      } = res;
      //上传图片
      wx.uploadFile({
        url: App.api_root + 'upload/image',
        filePath: tempFilePath,
        name'iFile',
        formData: params,
        success(res) {
          let result = typeof res.data === "object" ? res.data : JSON.parse(res.data);
          if (result.code === 1) {
              // 数据提交
              App._post_form('user.agent/sign', result.data, function (e{
                App.showSuccess(e.data, function () {
                  wx.navigateBack();
                });
              }, nullfunction () {});
            that.setData({
              imgUrl: tempFilePath,
            })
          }
        }
      })

      
     },
     fail() {
     wx.showToast({
      title'导出失败',
      icon'none',
      duration2000
     })
     }
    }))
    },
1 回复

你好,线上版本也可以打开vconsole排查的,打印下错误回调看看。

①、使用wx.setEnableDebug(Object object)开启调试开关https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/wx.setEnableDebug.html


②、在正式版打开调试还有一种方法,就是先在开发版或体验版打开调试,再切到正式版就能看到vConsole

回到顶部