已经有人提问了,但没看到官方恢复。当前的版本依然是错误的
我也发现了,确切说是iOS是反转的,Android和模拟器下正常。
写了个简单的测试代码:
<!--pages/test/test.wxml--> < view > < canvas canvas-id = 'mycanvas' style = "width:20px; height: 20px;" ></ canvas > < text > color at (10, 5): {{color1}} color at (10, 15): {{color2}} </ text > </ view > |
// pages/test/test.js Page({ data: { color1: '' , color2: '' }, onLoad() { this .draw() setTimeout(() => { this .getImage() }, 1000) }, draw() { const ctx = wx.createCanvasContext( 'mycanvas' ) ctx.beginPath() ctx.rect(0, 0, 20, 10) ctx.setFillStyle( 'red' ) ctx.fill() ctx.closePath() // ctx.draw() ctx.beginPath() ctx.rect(0, 10, 20, 10) ctx.setFillStyle( 'blue' ) ctx.fill() ctx.closePath() ctx.draw() }, getImage() { const self = this wx.canvasGetImageData({ canvasId: 'mycanvas' , x: 0, y: 0, width: 20, height: 20, success(image) { console.log(image.data) self.setData({ color1: self.getColor(image, 10, 5), color2: self.getColor(image, 10, 15) }) }, fail(error) { console.error(error) } }) }, getColor(image, x, y) { const i = (x + image.width * y) * 4 const r = image.data[i + 0] const g = image.data[i + 1] const b = image.data[i + 2] const a = image.data[i + 3] return `rgba(${r}, ${g}, ${b}, ${a})` } }) |
简单讲,就是上面画了红色矩形,下方是蓝色。然后对上下两个位置去颜色值。
Android上取值正确,iOS上是反转的
你好,问题已复现,我们会尽快进行修复。
建一个隐藏的canvas,然后在这个canvas上绘制两个已知像素信息的点,再把这个canvas的信息与已知的像素信息比较,从而得出当前平台导出的图片是否上下颠倒;如果颠倒的话,reverse通过
wx.canvasGetImageData
得到的像素信息。知乎上这个方案亲测有效。
https://zhuanlan.zhihu.com/p/37440710
你好:
机型:
1) Android,HUAWEI Mate9
2) iPhone8Plus
微信版本均为6.6.7
代码片段: wechatide://minicode/53m1zVmd6vZL
你好,还请麻烦你提供一下以下信息,谢谢,辛苦了:
1、提供出现问题的机型和微信版本号
2、提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)