function getAvgColor(src) {
return new Promise(resolve => {
const image = new Image();
image.src = src;
image.crossOrigin = 'Anonymous';
image.onload = () => {
const
canvas = document.createElement('canvas'),
context = canvas.getContext('2d');
canvas.width = image.width;
canvas.height = image.height;
context.drawImage(image, 0, 0);
const data = context.getImageData(0, 0, image.width, image.height).data;
const colors = {};
for (let i = 0; i < data.length; i += 4) {
const r = data[i];
const g = data[i + 1];
const b = data[i + 2];
const a = data[i + 3];
if (a > 0) {
const color = `${r},${g},${b}`;
colors[color] = (colors[color] || 0) + 1;
}
}
let avg = null,
max = 0;
for (const c in colors) {
if (colors[c] > max) {
avg = c;
max = colors[c];
}
}
resolve(avg ? `rgb(${avg})` : null);
}
});
}
getAvgColor('https://insights.ionited.io/banner.png')
.then(rgb => console.log(rgb));
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.