本例使用:vue
<!--canvas 定義-->
<canvas id="canvas01" width="400" height="400"></canvas>
複製代碼
// vue 生命週期
mounted(){
this.drawCanvas()
},
複製代碼
drawCanvas(){
var cav = document.getElementById('canvas01')
var ctx = cav.getContext('2d')
var img = new Image()
img.crossOrigin = 'anonymous'
// 這裏的 url 指向了 我 GitHub 頭像地址
img.src = this.url + '?time=' + new Date().getTime()
img.onload = () =>{
if(img.complete){
ctx.drawImage(img,0,0,img.width,img.height)
setTimeout(() =>{
// 保存原始像素信息
this.imagePixels = [...ctx.getImageData(0,0,cav.width,cav.height).data]
},1)
}
}
}
複製代碼
注意:git
width
height
canvas
畫圖,注意 id
定義要不一樣created()
img.crossOrigin
img.src ?time=
是爲了解決 圖片跨域的問題若只是用
canvas
畫圖,則不存在跨域問題,這裏的定義是由於要獲取像素信息github
var cav = document.getElementById('canvas01')
var ctx = cav.getContext('2d')
let imageData = ctx.getImageData(0,0,cav.width,cav.height)
let pixels = imageData.data
// 處理像素點
for (let i=0; i<pixels.length; i+=4){
let r = pixels[i]
let g = pixels[i+1]
let b = pixels[i+2]
// 灰色
let gray = parseInt((r+g+b)/3)
imageData.data[i] = gray
imageData.data[i+1] = gray
imageData.data[i+2] = gray
}
// 從新畫圖
ctx.putImageData(imageData, 0,0)
複製代碼
彩色: 用相同的方法,將以前保存的原始像素恢復回去element-ui
反向: 255 - 原值canvas
還有不少的圖片處理,是將圖片的
r
g
b
進行不一樣處理跨域
感謝支持。若不足之處,歡迎你們指出,共勉。bash
若是以爲不錯,記得 點贊,謝謝你們 😂異步
xrkffgg.github.io/Kvue/#/Canv…this