收藏
回答

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

框架类型 问题类型 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();

        }

    })

},


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

2 个回答

  • 2018-06-01

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

    2018-06-01
    有用
    回复 1
    • Thomas Lambert
      Thomas Lambert
      2018-06-01

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

      2018-06-01
      回复
  • Thomas Lambert
    Thomas Lambert
    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
    • 2018-06-01
      我的不是page,我把相机和预览写成组件了。外部page点击拍照按钮,触发component里的takePhoto方法,然后canvas标签在组件的wxml里。
      2018-06-01
      回复
    • Thomas Lambert
      Thomas Lambert
      2018-06-01回复

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



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


      2018-06-01
      1
      回复
    • 2018-06-01回复Thomas Lambert

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

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