Jinuss's blog Jinuss's blog
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript高级程序设计》
    • 《Vue》
    • 《React》
    • 《Git》
    • JS设计模式总结
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • 学习
  • 实用技巧
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

东流

前端可视化
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript高级程序设计》
    • 《Vue》
    • 《React》
    • 《Git》
    • JS设计模式总结
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • 学习
  • 实用技巧
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • React

  • Vue

  • JavaScript文章

    • new命令原理
    • ES5面向对象
    • ES6面向对象
    • 多种数组去重性能对比
    • 几个高级的JS API
    • JS随机打乱数组
    • 判断是否为移动端浏览器
    • 防抖与节流函数
    • JS获取和修改url参数
    • 比typeof运算符更准确的类型判断
    • Navigator clipboard介绍使用
    • Javascript 语法错题集
    • ESM和CommonJS详解
    • ColorThief的介绍与使用
      • 概述
      • API 介绍与示例
        • getColor方法
        • getPalette方法
        • 参考地址
    • 三级目录

  • 学习笔记

  • openlayers

  • threejs

  • MapboxGL

  • 工具

  • 源码合集

  • 前端
  • JavaScript文章
东流
2024-09-09
目录

ColorThief的介绍与使用

# 概述

colorThief是一个 Javascript 插件,支持在浏览器端或 Node 环境中使用。Thief的中文意思是偷窃、小偷。colorThief的作用就是通过算法去获取图片的色源。

# API 介绍与示例

colorThief提供两个方法,getColor和getPalette,这两个方法在 Node 环境中都是返回Promise。

# getColor方法

getColor方法接受两个参数img和quality。

  • img:图像源,在浏览器环境中 img 需要传 HTML 元素节点,而在 Node 中,img是图像路径

  • quality:可选参数,数值类型,1 或者更大的数字。默认是 10,决定采样时跳过多少像素。值越大,返回速度越快。

  • 效果

  • 示例

doms.imgList.forEach((img) => {
  img.addEventListener("click", async (e) => {
    console.log("🚀 ~ img1.addEventListener ~ e:", e.target);

    const p = await colorThief.getPalette(e.target, 3);

    console.log("🚀 ~ doms.img1.addEventListener ~ p:", p);
    let colorArr = [];
    p.forEach((item, index) => {
      const [r, g, b] = item;
      colorArr[index] = `rgb(${r},${g},${b})`;
    });
    colorArr.forEach((color, i) => {
      document.documentElement.style.setProperty(`--color${i + 1}`, color);
    });
  });
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# getPalette方法

getPalette方法也是接受 3 个参数,通过聚类相似颜色从图像中获取调色板。返回值为一个数组。它比getColor方法多了第二个参数,其第二个参数是返回多少个颜色

  • 效果

  • 示例

    const p = await colorThief.getColor(doms.img);
    console.log("🚀 ~ initExample2 ~ p:", p);
    doms.colorSpan[0].style.setProperty(
      "--color",
      `rgb(${p[0]},${p[1]},${p[2]})`
    );
    
    const count = doms.colorSpan.length;
    const q = await colorThief.getPalette(doms.img, count);
    
    q.forEach((item, index) => {
      const [r, g, b] = item;
      doms.colorSpan[index + 1].style.setProperty(
        "--color",
        `rgb(${r},${g},${b})`
      );
    });
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

# 参考地址

  • ColorThief官网 (opens new window)
  • 文章示例 (opens new window)
编辑 (opens new window)
上次更新: 2024/12/03, 14:43:37
ESM和CommonJS详解
四级文件(测试)

← ESM和CommonJS详解 四级文件(测试)→

最近更新
01
GeoJSON
05-08
02
Circle
04-15
03
CircleMarker
04-15
更多文章>
Theme by Vdoing | Copyright © 2024-2025 东流 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式