我想知道是否可以使用画布和 javascript 扫描图像中的某些像素颜色并使用它们来制作地图。 例如: 寻找#ff0000并将其设置为地图上的数字1并设置#000000到 2 等等,制作如下地图:
#ff0000
#000000
var map = [ [1,1,1,1,1], [1,0,0,0,1], [1,0,2,0,1], [1,0,0,0,1], [1,1,1,1,1] ];
所以基本上我想知道如何获取代码来读取图像并找到我想要它搜索的颜色,然后将它们绘制在变量中
这应该是一个好的开始。
var zeroFill = function(num, padding) { return Array(padding + 1 - (num + '').length).join('0') + num; }; var hexColorsToId = { 'ff0000': 1, '000000': 2 /* ... */ }, map = [], canvas = document.createElement('canvas'), ctx = canvas.getContext('2d'), image = new Image; image.onload = function() { canvas.width = image.width; canvas.height = image.height; ctx.drawImage(image, 0, 0, image.width, image.height); var data = ctx.getImageData(0, 0, canvas.width, canvas.height).data; for (var i = 0; i < data.length; i += 4) { var red = zeroFill(data[i].toString(16), 2), green = zeroFill(data[i + 1].toString(16), 2), blue = zeroFill(data[i + 2].toString(16), 2), hex = red + green + blue; if (hexColorsToId.hasOwnProperty(hex)) { map.push(hexColorsToId[hex]); } } }; image.src = '/img/logo.png';