Ajuster dynamiquement la couleur du texte en fonction de l'image d'arrière-plan

Je suis en train de travailler sur un produit qui génère des images par les utilisateurs et les informations de l'image est superposée sur le dessus de ladite images. Comme vous pouvez l'imaginer, les images nécessitent différentes couleurs de texte en raison de luminosité/obscurité. Est-il possible de réaliser cela avec JavaScript?

EDIT: j'ai trouvé une question similaire à la mienne et il y avait une solution donnée dans un jsfiddle (http://jsfiddle.net/xLF38/818). J'utilise jQuery pour mon site. Comment puis-je convertir la vanille JavaScript de jQuery?

var rgb = getAverageRGB(document.getElementById('i'));
document.body.style.backgroundColor = 'rgb(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ')';
function getAverageRGB(imgEl) {
var blockSize = 5, //only visit every 5 pixels
defaultRGB = {
r: 0,
g: 0,
b: 0
}, //for non-supporting envs
canvas = document.createElement('canvas'),
context = canvas.getContext && canvas.getContext('2d'),
data, width, height,
i = -4,
length,
rgb = {
r: 0,
g: 0,
b: 0
},
count = 0;
if (!context) {
return defaultRGB;
}
height = canvas.height = imgEl.naturalHeight || imgEl.offsetHeight || imgEl.height;
width = canvas.width = imgEl.naturalWidth || imgEl.offsetWidth || imgEl.width;
context.drawImage(imgEl, 0, 0);
try {
data = context.getImageData(0, 0, width, height);
} catch (e) {
/* security error, img on diff domain */
alert('x');
return defaultRGB;
}
length = data.data.length;
while ((i += blockSize * 4) < length) {
++count;
rgb.r += data.data[i];
rgb.g += data.data[i + 1];
rgb.b += data.data[i + 2];
}
//~~ used to floor values
rgb.r = ~~ (rgb.r / count);
rgb.g = ~~ (rgb.g / count);
rgb.b = ~~ (rgb.b / count);
return rgb;
}

source d'informationauteur NetOperator Wibby | 2013-06-19