canvasのscales(-1,1)iosでは左右反転を実現できない解決法
3453 ワード
canvasのscales(-1,1)では左右反転は実現できず、本体Androidや開発ツールでは問題なく、本体iosでは反応しなかった.理由は次のとおりです.
ios端ではscaleで負の数を伝えることはできません.-1を伝えると1になります.
政府はこれまで関連する支持方式を提供していない.
どうすればいいですか.次は微信のオープンプラットフォームで大物が提供する方法をお勧めします.
https://developers.weixin.qq.com/s/dp1VOKmY7b3m
このリンクを直接クリックして、微信開発者ツールを開くことができます.以下にもコードを貼り付けます(上のリンクをクリックして開くことをお勧めします.下のコードは自分で1枚の画像を用意する必要があります)
ios端ではscaleで負の数を伝えることはできません.-1を伝えると1になります.
政府はこれまで関連する支持方式を提供していない.
どうすればいいですか.次は微信のオープンプラットフォームで大物が提供する方法をお勧めします.
https://developers.weixin.qq.com/s/dp1VOKmY7b3m
このリンクを直接クリックして、微信開発者ツールを開くことができます.以下にもコードを貼り付けます(上のリンクをクリックして開くことをお勧めします.下のコードは自分で1枚の画像を用意する必要があります)
.js
Page({
data: {
},
onLoad: function() {
this.canvas = wx.createCanvasContext("canvas", this)
wx.getImageInfo({
src: '/gsl.png',
success: res => {
this.setData({
height: res.height,
width: res.width
}, () => {
this.canvas.drawImage("/gsl.png")
this.canvas.draw(false, () => {
wx.canvasGetImageData({
canvasId: 'canvas',
x: 0,
y: 0,
width: this.data.width,
height: this.data.height,
success: res => {
console.log(res)
let data = res.data
let length = data.length
let width = 4 * res.width
let pos = 0
let array = []
let result = []
let test = 0
let colorArray = []
for (let index = 0; index < length; index++) {
colorArray.push(data[index])
if (colorArray.length == 4) {
array.push(colorArray.concat())
colorArray = []
}
pos++
if (pos >= width) {
pos = 0
let temp = []
array.reverse().forEach(item => {
temp = temp.concat(item)
})
result = result.concat(temp)
array = []
}
}
let output = new Uint8ClampedArray(result)
wx.canvasPutImageData({
canvasId: 'canvasOut',
data: output,
x: 0,
y: 0,
width: this.data.width,
height: this.data.height,
})
}
})
})
})
}
})
},
})
.wxml
最後に、感慨の一言、技術は本当に偉大です!