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));

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.