收藏
回答

华为手机 wx.createCanvasContext("my",this);生成图片黑屏?

微信小程序画布生成图片在华为手机上黑屏

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

1 个回答

  • 曹孟良
    曹孟良
    2021-12-29

    具体啥型号的手机,系统版本是多少;我有一台华为的设备,没有遇到过你这个问题,你可以提供下代码片段我们试试

    2021-12-29
    有用
    回复 3
    • 叹
      2021-12-29
      //生成图片
        previewshow() {

          var mbinfo = this.data.mbinfo;

          this.setData({
            textheight: 0,
            textwidth:0,
            maincanvwidth:mbinfo.width * 2,
            maincanvheight:mbinfo.height * 2
          })
          var that = this;
          if (!ctx) {
            var tt = wx.createCanvasContext("myCanvas",this);
            ctx = tt;
          }
          ctx.fillStyle = '#EBEBEB';
          ctx.fillRect(0,0,mbinfo.width, mbinfo.height);

          ctx.drawImage(
            mbinfo.url,
            0,
            0,
            mbinfo.width,
            mbinfo.height
          );

          var canvasviewlist = this.data.canvasview;
          if(canvasviewlist.length > 0){

            ctx.draw(true);
          }
          if (this.data.canvasShow == false) {
            wx.showLoading({
              title: '生成中',
              mask: true
            });



            var zbheight = wx.getStorageSync('zbheight');
            for (let i = 0; i < canvasviewlist.length; i++) {
              ctx.save()

              var sjtop = canvasviewlist[i].top - this.data.rectheight;

              var thiswidth = canvasviewlist[i].widthss;
              var thisheight = canvasviewlist[i].heightss;

              var leftbl = canvasviewlist[i].left / zbheight;
              var sjtop = sjtop / zbheight;
              if (canvasviewlist[i].rotate != 0) {

                // var centerpoitx = canvasviewlist[i].left + canvasviewlist[i].width / 2;
                // var centerpoity = canvasviewlist[i].top + canvasviewlist[i].height / 2;
                // var rotatenumber = canvasviewlist[i].rotate * Math.PI / 180;
                // ctx.translate(centerpoitx, centerpoity);
                // ctx.rotate(rotatenumber);
                // ctx.translate(-centerpoitx, -centerpoity);

                var centerpoitx = leftbl + thiswidth / 2;
                var centerpoity = sjtop + thisheight / 2;
                var rotatenumber = canvasviewlist[i].rotate * Math.PI / 180;
                ctx.translate(centerpoitx, centerpoity);
                ctx.rotate(rotatenumber);
                ctx.translate(-centerpoitx, -centerpoity);


              }

              console.log(thiswidth);

              ctx.drawImage(
                canvasviewlist[i].url,
                leftbl,
                sjtop,
                thiswidth,
                thisheight
              );
              ctx.restore()

            }


            setTimeout(() => {

              ctx.draw(true, () => {
                wx.canvasToTempFilePath({
                  canvasId: 'myCanvas',
                  fileType: "jpg",
                  quality:0.8,
                  width:mbinfo.width,
                  height:mbinfo.height,
                  destWidth:mbinfo.width,
                  destHeight:mbinfo.height,

                  success: function(res) {
                    // 在H5平台下,tempFilePath 为 base64
                    wx.setStorageSync('this_f_thumb', res.tempFilePath);
                    that.uploadimg(res.tempFilePath);
                  },
                  fail(res) {
                    wx.showLoading({
                      title: '生成失败',
                      mask: true
                    });
                  }

                })
                wx.hideLoading();



                ctx.draw();
              });




            }, 2000)


          } else {
            ctx.draw();

          }


        },
      2021-12-29
      回复
    • 叹
      2021-12-29回复
      这是我的代码试了几部华为手机都是这样,基础库是2.14.1
      2021-12-29
      回复
    • 曹孟良
      曹孟良
      2021-12-30回复
      我试试
      2021-12-30
      回复
登录 后发表内容