2025年4月12日 星期六 乙巳(蛇)年 正月十三 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > JavaScript

js:获取图片颜色的主色调

时间:05-23来源:作者:点击数:35

在浏览器环境中,可以通过canvas 获取图片的颜色列表,再对其进行排序,就能获取图片颜色主色调了,也可以使用开源库,可以很方便的获取图片颜色

rgbaster

文档

  • npm: https://www.npmjs.com/package/rgbaster

安装

  • npm i rgbaster

rgbaster会返回如下结果

  • [
  • { color: 'rgb(0,0,255)', count: 86 },
  • { color: 'rgb(9,18,42)', count: 32 },
  • { color: 'rgb(120,8,202)', count: 3 },
  • ]

示例

  • import rgbaster from 'rgbaster'
  • let res = await rgbaster('图片url', { scale: 0.6 });
  • // 获取图片主色
  • res[0].color

color-thief

  • github https://github.com/lokesh/color-thief
  • npmjs https://www.npmjs.com/package/colorthief
  • 文档 https://lokeshdhakar.com/projects/color-thief/

canvas

使用canvas获取图片颜色的方法

  • <canvas id="canvas"></canvas>
  • <script>
  • // 步骤一:创建 Canvas 元素
  • var canvas = document.getElementById("canvas");
  • var ctx = canvas.getContext("2d");
  • // 步骤二:绘制图片到 Canvas 上
  • var img = new Image();
  • img.onload = function () {
  • canvas.width = img.width;
  • canvas.height = img.height;
  • ctx.drawImage(img, 0, 0);
  • getImageColors();
  • };
  • img.src = "image.jpg";
  • // 步骤三:遍历像素点获取颜色值
  • function getImageColors() {
  • var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
  • var data = imageData.data;
  • var colors = [];
  • for (var i = 0, len = data.length; i < len; i += 4) {
  • var r = data[i];
  • var g = data[i + 1];
  • var b = data[i + 2];
  • var a = data[i + 3];
  • colors.push([r, g, b, a]);
  • }
  • console.log(colors);
  • }
  • </script>
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门