canvasPutImageData 无法绘制data
发布于 6 年前 作者 eyang 19728 次浏览 来自 问答

使用的是官方提供的代码片段:

function convertToGrayscale(data) {

  let g = 0

  for (let i = 0; i < data.length; i += 4) {

    g = (data[i] * 0.3 + data[i+1] * 0.59 + data[i+2] * 0.11)

    data[i] = g

    data[i+1] = g

    data[i+2] = g

  }

  return data

}

Page({

  onReady() {

  },

  openAndDraw() {

    wx.chooseImage({

      success: (res) => {

        const ctx = wx.createCanvasContext(‘canvasIn’, this);

        ctx.drawImage(res.tempFilePaths[0], 0, 0)

        ctx.draw()

      }

    })

  },

  export() {

    wx.canvasToTempFilePath({

      canvasId: ‘canvasOut’,

      success: (res) => {

        wx.saveImageToPhotosAlbum({

          filePath: res.tempFilePath,

          success: (res) => {

            console.log(res)

          },

          fail: (err) => {

            console.error(err)

          }

        })

      },

      fail: (err) => {

        console.error(err)

      }

    }, this)

  },

  process() {

    const cfg = {

      x: 0,

      y: 0,

      width: 300,

      height: 300,

    }

    wx.canvasGetImageData({

      canvasId: ‘canvasIn’,

      …cfg,

      success: (res) => {

        const data = convertToGrayscale(res.data)

        wx.canvasPutImageData({

          canvasId: ‘canvasOut’,

          data,

          …cfg,

          success: (res) => {

            console.log(res)

          },

          fail: (err) => {

            console.error(err)

          }

        })

      },

      fail: (err) => {

        console.error(err)

      }

    })

  }

})

  • 当前 Bug 的表现(可附上截图)

开发者工具使用基础库2.3.2版本(目前能选择的最新版,无2.4.0版本),处理正常

安卓手机处理正常

IOS 12.0手机无法显示,但回调函数输出errmsg正常,回调函数输出信息和开发者工具以及安卓手机的不一样

IOS11.3.1可以显示图片,但是绘制的仍是处理前的data,而不是处理后的data

1 回复

收到,已经复现,我们会继续跟进,谢谢反馈~

回到顶部