前面的准备的代码
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>canvas{border: 1px solid #000;}</style></head><body><canvas id="canvas" width="500" height="500"></canvas><script>/**@type{HTMLCanvasElement}*/const canvas = document.getElementById('canvas')const ctx = canvas.getContext('2d')const img = new Image()img.src = './images/img_01.jpg'img.onload = function(e){// 下方代码全在此处添加}</script></body></html>
在canvas里画图
drawImage()
参数数量为 9
当为三参数时、
drawImage(图片对象, 图片起点x轴, 图片起点y轴,);
ctx.drawImage(img,50,50)
效果如图
当为五个参数时
drawImage(图片对象, 图片起点x轴, 图片起点y轴, 图片宽度, 图片高度);
ctx.drawImage(img,50,50,200,200)
效果如图
当为九个参数时
drawImage(图片对象, 图片上x轴位置, 图片上y轴位置, 图片宽度, 图片高度, canvas的x轴, canvas的y轴, canvas里图片显示的宽度, canvas里图片显示的高度);
ctx.drawImage(img,450,70,130,150,50,50,200,200)
导出图片
canvas.toDataURL()
const imgSrc = canvas.toDataURL() //这个方法要注意:它是放在canvas身上的,并不是ctx身上!!!
像素操作
获取图片数据
getImageData(起点x,起点y,宽,高)
ctx.drawImage(img,50,50,200,200)const imgInfo = ctx.getImageData(0,0,500,500)console.log(imgInfo)
将像素信息对象放回到canvas
ctx.putImageData(修改后的img对象,50,50);
案例可以看类型化数组制作黑白图片

