一、问题发现
在阅读《JavaScript DOM 编程艺术》时,文中运用canvas将彩色图片变成灰度图片,有一部分代码段不太理解。
二、问题解决
getImageData方法返回每一个像素点的RGBA值,即一个像素点对应四个值。
该代码段运用两层for循环遍历图片的每一个像素点,x为每个像素点对应r值的下标,x+1,x+2即分别为g,b值的下标,而c.data[x],c.data[x+1],c.data[x+2]对应像素点的rgb值。
将每个彩色像素的红绿蓝色彩成分求平均值,得到对应彩色值的灰度值。
三、完整代码
grayscale.html代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>彩色图片变成灰度照片</title>
</head>
<body>