javascript提取图片主要颜色

编程入门 行业动态 更新时间:2024-10-22 23:50:33

javascript提取图片主要<a href=https://www.elefans.com/category/jswz/34/1771046.html style=颜色"/>

javascript提取图片主要颜色

本文主要整理前人的文章,并增强色彩饱和度,在此记录留用

基础html结构

<span style='display: inline-block;width:200px;height: 200px;' id='span'>预览</span>
<img id="imgs" src="http://127.0.0.1:8081/rgb1.jpg" alt="" width="300" height="400">

借助 canvas 提取图片主要 rgb 色值

var img = document.getElementById('imgs');var span = document.getElementById('span');function getImageColor(img) {var canvas = document.createElement('canvas')canvas.width = img.width;canvas.height = img.height;var context = canvas.getContext("2d");img.crossOrigin = "Anonymous"context.drawImage(img, 0, 0, canvas.width, canvas.height);// 获取像素数据var data = context.getImageData(0, 0, img.width, img.height).data;console.log(data)var r = 1,g = 1,b = 1;// 取所有像素的平均值for (var row = 0; row < img.height; row++) {for (var col = 0; col < img.width; col++) {// console.log(data[((img.width * row) + col) * 4])if (row == 0) {r += data[((img.width * row) + col)];g += data[((img.width * row) + col) + 1];b += data[((img.width * row) + col) + 2];} else {r += data[((img.width * row) + col) * 4];g += data[((img.width * row) + col) * 4 + 1];b += data[((img.width * row) + col) * 4 + 2];}}}console.log(r, g, b)// 求取平均值r /= (img.width * img.height);g /= (img.width * img.height);b /= (img.width * img.height);// 将最终的值取整r = Math.round(r);g = Math.round(g);b = Math.round(b);console.log(r, g, b)return [r, g, b]}

将rgb色转位hsl色并增强 s,l值

   function rgbtohsl(rgb) {r = rgb[0] / 255;g = rgb[1] / 255;b = rgb[2] / 255;var min = Math.min(r, g, b);var max = Math.max(r, g, b);var l = (min + max) / 2;var difference = max - min;var h, s, l;if (max == min) {h = 0;s = 0;} else {s = l > 0.5 ? difference / (2.0 - max - min) : difference / (max + min);switch (max) {case r:h = (g - b) / difference + (g < b ? 6 : 0);break;case g:h = 2.0 + (b - r) / difference;break;case b:h = 4.0 + (r - g) / difference;break;}h = Math.round(h * 60);}s = Math.round(s * 100 * 1.5)+ '%'; //转换成百分比的形式l = Math.round(l * 100 * 0.8)+ '%';const str = "hsl(" + h + "," + s + "," + l + ")";console.log('str', str)return str}

调用方法

   img.onload = function () {const rgb = getImageColor(img)const hsl = rgbtohsl(rgb)span.style.background = hsl}

更多推荐

javascript提取图片主要颜色

本文发布于:2024-03-04 10:39:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1709034.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:颜色   图片   javascript

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!