img.onload = function () {ctx.drawImage(img, 0, 0)img.style.display = 'none'// 获取像素数据let data = context.getImageData(0, 0, img.width, img.height).data// ImageData.data 类型为Uint8ClampedArray的一维数组,每四个数组元素代表了一个像素点的RGBA信息,每个元素数值介于0~255let r = 0,g = 0,b = 0// 取所有像素平均值for (let row = 0; row < img.height; row++) {for (let col = 0; col < img.width; col++) {r += data[(img.width * row + col) * 4]g += data[(img.width * row + col) * 4 + 1]b += data[(img.width * row + col) * 4 + 2]}}// 计算平均值r /= img.width * img.heightg /= img.width * img.heightb /= img.width * img.height// 将结果取整r = Math.round(r)g = Math.round(g)b = Math.round(b)// 给背景设置渐变bgBox.style.backgroundImage = `linear-gradient(rgb(${r}), rgb(${g}), rgb(${b})`;}
