收藏
回答

canvas 2d真机预览是putImageData不生效?

2d类型的canvas,putImageData在真机预览时不管用。开发工具里是可以的。线上未知。。

代码片段

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

3 个回答

  • 小程序技术专员-Eric
    小程序技术专员-Eric
    置顶回答2019-11-29

    这个问题我们排查下,可以先用 canvas.createImageData 接口来创建 ImageData https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Canvas.createImageData.html

    2019-11-29
    有用
    回复
  • 社区技术运营专员-娇华
    社区技术运营专员-娇华
    2019-11-29

    你好,不管用具体是什么表现呢?Android还是ios呢?出现问题的机型、系统版本、微信版本麻烦都提供下

    2019-11-29
    有用
    回复 3
    • 张旺
      张旺
      2019-11-29
      2019-11-29
      回复
    • 〽
      2019-12-09
      我也遇到这个问题, putimagedata 后, 开发者工具可以画面, ios 和 android 手机都看不到画面, 都是白屏. drawimage 都正常
      2019-12-09
      回复
    • 〽
      2019-12-09
      我是先 ctx.createImageData 创建了 imagedata 对象, 再把 typed array 数据 set 到这个 imagedata 对象中. 最后把这个 imagedata  put 回 ctx
      2019-12-09
      回复
  • 飞飞小坏蛋
    飞飞小坏蛋
    08-18
    let context = canvasNode.getContext("2d");
    let imageObj = canvasNode.createImage();
    imageObj.src = "https://test.local/bg.png";
    imageObj.onload = function(){
        context.drawImage(imageObj, 0, 0, actualWidth, actualHeight);
    };
    


    我为了在棋盘上绘制箭头,反复测试自己的代码,发现:在手机上(SDK version : 2.12.1, 微信7.0.17,Android 10 ,MIUI 12.0.2),必须经历context.drawImage()这一步,而且背景图片不能完全透明否则context.putImageData()不工作,这跟html5的canvas的.putImageData()不一样。

    如果要让canvas恢复透明的样子,方法有:

    1、等待微信小程序团队修改context.putImageData();

    2、使用context.clearRect()代替context.putImageData()。

    你的代码,我在手机上预览了,把sdk的版本调高就可以了(我的手机上的微信小程序的SDK version : 2.12.1)。




    08-18
    有用
    回复
登录 后发表内容
问题标签