收藏
回答

拍照takePhoto返回的tempImagePath无法画布drawImage

问题模块 框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
API和组件 小程序 Bug drawImage 微信iOS客户端 6.6.6 1.9.94

需求很简单代码也很简单,就是效果出不来,心好累。。。老铁们,怎么办

takePhoto() {

    this.data.camera.takePhoto({

        quality: 'high',

        success: (res) => {

            let cv =  wx.createCanvasContext("abc");     //canvas-id='abc'

            let w = this.data.canvasW;                            //<canvas>宽

            let h = this.data.canvasH;

            cv.drawImage(res.tempImagePath, 0, 0, w, h);    //res.tempImagePath是http://tmp/xxx.jpg

            cv.draw();

        }

    })

},


最后一次编辑于  2018-06-01  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

2 个回答

  • Eden🇨🇳
    Eden🇨🇳
    2018-06-01

    没报错,但是canvas画不了图片,开发者工具出不来效果

    2018-06-01
    赞同
    回复 1
    • 安震110
      安震110
      2018-06-01

      你在手机上测试,以手机为准

      2018-06-01
      回复
  • 安震110
    安震110
    2018-06-01

    报的什么错,我这测试没问题

    wxml:

    <camera device-position="back" flash="off" binderror="error" style="width: 100%; height: 300px;"></camera>
    <button type="primary" bindtap="takePhoto">拍照</button>
    <canvas canvas-id="abc" style="width:100%;height:350rpx;"></canvas>

    js:

    Page({
      data: {
        canvasW:350,
        canvasH:350
      },
      onLoad: function (options) {
        this.camera = wx.createCameraContext()
      },
      takePhoto:function(e) {
        this.camera.takePhoto({
          quality: 'high',
          success: (res) => {
            let cv = wx.createCanvasContext("abc");     //canvas-id='abc'
            let w = this.data.canvasW;                            //<canvas>宽
            let h = this.data.canvasH;
            cv.drawImage(res.tempImagePath, 0, 0, w, h);    //res.tempImagePath是http://tmp/xxx.jpg
            cv.draw();
          }
        })
      }
    })


    2018-06-01
    赞同
    回复 3
    • Eden🇨🇳
      Eden🇨🇳
      2018-06-01
      我的不是page,我把相机和预览写成组件了。外部page点击拍照按钮,触发component里的takePhoto方法,然后canvas标签在组件的wxml里。
      2018-06-01
      回复
    • 安震110
      安震110
      2018-06-01回复Eden🇨🇳

      创建 canvas 绘图上下文(指定 canvasId)。在自定义组件下,第二个参数传入组件实例this,以操作组件内 <canvas/> 组件



      let cv = wx.createCanvasContext("abc",this);      //canvas-id='abc'


      2018-06-01
      1
      回复
    • Eden🇨🇳
      Eden🇨🇳
      2018-06-01回复安震110

      可以了,谢啦。老司机就是稳当,666啊

      2018-06-01
      回复