Comment obtenir la couleur moyenne d'une image en JavaScript
Déterminer la couleur moyenne d'une image est une fonctionnalité utile qui peut être utilisée dans diverses applications, telles que la création d'une palette de couleurs ou l'extraction du ton général d'une image. Bien qu'il existe de nombreux frameworks et bibliothèques qui peuvent facilement implémenter cette fonctionnalité, cet article se concentrera sur la façon d'écrire un script à l'aide de JavaScript natif pour calculer la couleur moyenne d'une image.
Solution de contournement
En raison des restrictions de sécurité du navigateur, l'accès direct aux données des pixels de l'image n'est pas possible à moins que l'image ne soit chargée dans le canevas. Nous allons donc utiliser l'élément
Code
Le code JavaScript suivant utilise l'élément
<code class="javascript">function getAverageRGB(imgEl) { // 将图像加载到画布中 var canvas = document.createElement('canvas'); var context = canvas.getContext('2d'); canvas.width = imgEl.naturalWidth || imgEl.offsetWidth || imgEl.width; canvas.height = imgEl.naturalHeight || imgEl.offsetHeight || imgEl.height; context.drawImage(imgEl, 0, 0); // 获取图像数据 var data = context.getImageData(0, 0, canvas.width, canvas.height); // 初始化 RGB 和计数器 var rgb = {r: 0, g: 0, b: 0}; var count = 0; // 循环遍历像素数据 for (var i = 0; i < data.data.length; i += 4) { // 累加 RGB 值 rgb.r += data.data[i]; rgb.g += data.data[i + 1]; rgb.b += data.data[i + 2]; count++; } // 计算平均 RGB 值 rgb.r = Math.floor(rgb.r / count); rgb.g = Math.floor(rgb.g / count); rgb.b = Math.floor(rgb.b / count); return rgb; }</code>
Utilisations
Pour utiliser ce code, passez simplement l'élément d'image que vous souhaitez analyser à la fonction getAverageRGB. Cette fonction renverra un objet contenant la valeur RVB moyenne de l'image. Ces valeurs peuvent ensuite être utilisées dans diverses applications pour générer des couleurs ou extraire la teinte dominante d'une image.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!