收藏
回答

有没有像h5的canvas有getImageData和putImageData

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 需求 Canvas 客户端 6.7.3 2.4.2

请问下,h5的canvas有getImageData和putImageData,但是小程序只有wx.canvasGetImageData和wx.canvasPutImageData这样的异步回调,能不能提供像h5那样的方法


- 用小程序做一个绘图软件,虽然有beginpath、moveto、lineto等方法,但是随着路径越来越多计算时间就越来越长,所以就需要缓存 当前的路径作为位图保存下来,然后把路径清空,可惜只有wx.canvasPutImageData,异步且这个方法会清除画布


- canvas提供了drawimage,不过是传入一个图片路径,同理应该可以用canvas绘制位图,或者有没有其他接口,我想要h5的putImageData 同步而且性能好的


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

2 个回答

  • 微信技术专员 - Rex
    微信技术专员 - Rex
    2018-12-12

    目前还不太好提供同步的接口,你说 putImageData 会清除画布,这个 h5 也一样吧。


    drawImage 是指需要传一个 Image 或 Canvas 对象来绘制吗?

    2018-12-12
    赞同
    回复 1
    • Zx
      Zx
      2018-12-12

      官方文档接口:

          CanvasContext.drawImage(string imageResource, number dx, number dy, number dWidth, number dHeight, number sx, number sy, number sWidth, number sHeight)

      传入的imageResource通过 wx.chooseImage(Object object) 获取路径

      我的意思是既然有drawImage这个方法,那实现putImageData应该不难(猜测  O(∩_∩)O哈哈~)


      2018-12-12
      回复
  • 邱一欢
    邱一欢
    2018-12-12

    可以用 wx.canvasToTempFilePath 来缓存当前canvas的东西,在通过drawImage 来回写回去。

    wx.canvasPutImageData这个不好用,设置的数据有大小限制, 图片数据大了会直接就报错了。



    2018-12-12
    赞同
    回复 1
    • Zx
      Zx
      2018-12-13

      这个好,实现缓存需求了,谢谢!!

      2018-12-13
      回复