"use strict"; function colourize(image, r, g, b) { let canvas = document.createElement("canvas"), context = canvas.getContext("2d"); canvas.width = image.width; canvas.height = image.height; context.drawImage(image, 0, 0); let image_data = context.getImageData( 0, 0, canvas.width, canvas.height ), buf = new ArrayBuffer(image_data.data.length), view = new Uint32Array(buf), view8 = new Uint8ClampedArray(buf); console.log(`Canvas: ${canvas.width}x${canvas.height}, image data: ${image_data.width}x${image_data.height}`); let count = 0; for(let y = 0; y < image_data.height; y++) { for(let x = 0; x < image_data.width; x++) { let loc = y*image_data.width + x; //if(image_data.data[loc*4 + 3] == 0) continue view[loc] = (image_data.data[loc*4 + 3] << 24) | // Alpha ((b+image_data.data[loc*4 + 2])/2 << 16) | // Blue ((g+image_data.data[loc*4 + 1])/2 << 8) | // Green (r+image_data.data[loc*4])/2; // Red count++; } } console.log(`Changed ${count} / ${canvas.width*canvas.height} pixels`); image_data.data.set(view8); context.putImageData(image_data, 0, 0); return canvas.toDataURL(); // let image_data = context.getImageData() } export default colourize;