您可以使用画布更改颜色:
例如 - 只是干隔离代码,但根据需要进行调整:
/// draw image onto canvas of same size as image
ctx.drawImage(img, 0, 0);
/// KEY: change composite mode
ctx.globalCompositeOperation = 'source-in';
/// pick any color you want
ctx.fillStyle = '#00f';
/// draw rectangle on top with fill style - only solid pixels will change
ctx.fillRect(0, 0, canvas.width, canvas.height);
这是一个在线演示。
此处使用的合成模式将确保仅填充纯色;透明像素将保持透明。你可以填充任何东西,渐变,另一个图像等等。
完成后,您现在可以按原样使用屏幕上的画布(它将显示为图像),或者您可以从画布中获取数据 uri,您可以使用“画布”将其设置为另一个图像元素的源.toDataURL()` 但是,要使最后一个工作,您需要满足CORS要求。最简单的就是直接使用画布。