ColorThief的介绍与使用

news2024/9/20 9:43:17

概述

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

API 介绍与示例

colorThief提供两个方法,getColorgetPalette,这两个方法在 Node 环境中都是返回Promise

getColor方法

getColor方法接收两个参数imgquality

  • 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);
    });
  });
});

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})`
      );
    });
    

参考地址

  • ColorThief官网
  • 文章示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2129338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

类和对象(c++)

欢迎来到本期频道! 类和对象 类定义:格式:类域:访问限定符友元内部类this指针静态与非静态成员关系类型转换六大默认成员函数(C98)1️⃣构造函数2️⃣拷贝构造函数浅拷贝与深拷贝 3️⃣赋值重载拷贝函数4️…

x-cmd pkg | superfile: 终端文件管理器,界面精致美观

目录 简介快速上手功能特点竞品和相关项目进一步阅读 简介 superfile 是 github.com/yorukot 用 Go 开发的终端文件管理器,相比于其他终端文件管理器,它最显著的特点是 UI 精致美观。 Tip Superfile 采用了特殊的 Unicode 符号来标识各种类型的文件&…

【我的 PWN 学习手札】Unsortedbin Leak

前言 从前都是野路子学习,学校时间也比较紧张,没有能够好好总结。一直有做个人笔记的习惯,但是学习路线比较分散盲目,虽然跟着wiki做,但是也面临知识点不全的窘境。近期开始跟着课程系统的学习,对于老的知…

mp3转文字要怎么处理?使用这4个工具就对了

MP3是音频当中比较常用的格式,如果像将其转换成文字内容,一般的语音转文字工具都是可以完成的。但是音频转换成文字的过程中,它的准确率是会受到像口音,语言,环境音等因素的影响的。所以大家如果想将自己的mp3语音转成…

en造数据结构与算法C# 用数组实现个栈还不简单???看我一秒破之!!!(unity演示)

实现效果 线性表,线性表是指数据元素按顺序排列的一种数据结构,下面这些东西可以说都是线性表,所以用array实现三者一点问题都没有 分别是List动态数组,stack栈和queue队列,今天就秒掉stack 栈:先进后出 实…

Vue邮件发送:如何有效集成邮件发送功能?

vue邮件发送功能实现方法?Vue邮件发送性能怎么优化? 无论是用户注册验证、密码重置,还是通知提醒,邮件发送功能都能提供重要的支持。本文将详细探讨如何在Vue项目中有效集成邮件发送功能,确保邮件能够准确、及时地送达…

万龙觉醒免费辅助:VMOS云手机辅助巴克尔阵容搭配攻略!

《万龙觉醒》是一款策略类手游,选择合适的英雄阵容搭配能够极大提升战斗效果。而借助VMOS云手机的辅助功能,玩家可以更加轻松地管理游戏进程,优化操作体验。以下是VMOS云手机的三大核心功能,帮助你更好地掌控《万龙觉醒》战局。 V…

通信工程学习:什么是QoS服务质量

QoS服务质量 在通信工程中,QoS(Quality of Service,服务质量)是一个至关重要的概念,它关乎网络性能的提升和用户体验的优化。QoS是网络的一种安全机制,旨在通过一系列技术和策略来优化网络资源的分配&#…

代码随想录打卡Day30

今天的题目还可以,第一题看了视频,看卡哥把问题转化成数学问题,把图画出来以后就会了,剩下两题没看视频直接AC的。 452. 用最少数量的箭引爆气球 这个题主要是画完图以后就很好理解了,需要先对区间按照区间左值进行排…

飞速了解Conda的作用和安装使用教程

当我们想要在github上克隆不同的项目下来运行时,会发现项目的语言环境或包的版本不同,出现版本冲突问题会导致程序无法运行、兼容性问题频出。我们常常需要管理多个项目,每个项目可能依赖于不同的包版本或编程语言环境。如果不加以管理&#…

华为OD机试 - 报文响应时间 - 贪心算法、位运算(Java 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(E卷D卷A卷B卷C卷)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加…

基于SpringBoot的准妈妈孕期交流平台

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:SpringBoot框架 工具:IDEA/Eclipse、Navicat 系统展示 首页 管理员登录 用户管理 早教…

C++ STL关联容器Set与集合论入门

1. 简介 Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。Set集合的底层使用一颗红黑树,其属于一种非线性的数据结构,每一次插入数据都会自动…

【F的领地】项目拆解:小学教辅资料

项目介绍 虚拟资料项目的赛道其实一直可以做,实际上就是一个信息差项目。 知识付费是常青树,人天生有为知识付费的倾向。 而且虚拟资料通常一份 19~99 的资料有这方面需求很容易就能付款。 主要是产附属的流量再提问题。 我有个同乡,18年…

DDOS攻击学习-scapy使用python编写SYN拒绝服务攻击

文章目录 启动&配置发送数据怎么查看回答查看详细的数据sinff()hexdump() 使用python进行SYN拒绝服务攻击 安装npcap可以查看此教程 启动&配置 scapy#控制台输入如图所示可以查看IP等, 格式是 变量名 IP()/TCP()你可以查看相关信息 变量名.show()以上的值都可以进行…

2024第三届大学生算法大赛 真题训练2 解题报告 | 珂学家 | FFT/NTT板子

前言 题解 D是FFT板子题,这么来看,其实处于ACM入门题,哭了T_T. D. 行走之谜 思路: FFT 如果你知道多项式乘法,继而知道FFT,那题纯粹就是板子题,可惜当时比赛的时候,无人AC。 这题来简单抽象…

最好磁吸充电宝是哪个牌子?目前公认好用磁吸充电宝排行榜!

在现代生活中,移动设备的普及使得充电宝成为了人们日常出行必备的工具。尤其是磁吸充电宝,以其便捷的使用体验和高效的充电速度,逐渐受到消费者的青睐。然而,在选择充电宝时,安全性能是不可忽视的重要因素。一个好的充…

Redis入门1

Redis简介 Redis是一个基于内存的 key-value 结构数据库。 基于内存存储,读写性能高 适合存储热点数据(热点商品、资讯、新闻) 企业应用广泛 官网:https://redis.io 中文网:https://www.redis.net.cn/ window版启动命令 redis-server.exe redis.windows.con…

使用dnSpy调试服务端IIS部署的WebService的程序集

服务器上部署的C#编写WebService出现问题,需要排查,但没有对应的源码,只能在服务器端想办法调试。   IIS中部署的WebService服务,其应用程序池对应操作系统中的w3p.exe进程(高版本IIS对应的进程是w3wp)。…

[001-02-001]. 第07-03节:理解线程的安全问题

我的后端学习大纲 我的Java学习大纲 当多个线程共享一份数据的时候,不同的线程对数据进行操作,就可能会导致线程安全问题,比如卖票过程中出现了错票和重复票的问题: 1、卖票问题分析: 1.1.理想状态: 1.2.极…