网站首页 > 知识剖析 正文
图片提取主题色的工具库,可以实现一些酷炫的界面效果。
本文不是 AI 生成,大部分文字都是我自己敲键盘,部分文字摘自 autohue.js 作者主页,请各位放心舒适阅读。
autohue.js 简介
autohue.js 是一个图片背景色提取库,基于提出来的颜色,可以实现很多看起来比较惊艳的效果。
主要功能
- 提取图片的主题色和次主题色,也就是面积占比最大的两个颜色值;
- 提取图片四边颜色(即图片边缘颜色,渐变时,需要边缘颜色来设置背景色)
提取到主题色有什么作用?
卡片、海报中的颜色遮罩
多年以前,卡片式设计很流行,我在工作上就接到一个需求,UI 设计师做的是大图卡片式设计,要求在图片上显示标题和文案内容,文字的底色要求和封面图接近,最好是融为一体。描述是苍白的,于是设计师就把她“抄”的原界面发给我看,我差点没吐血…
AppStore 的大图海报界面
好家伙,苹果的 AppStore 首页的海报大图确实好看,但当时是真不好实现,最后怎么艰难实现的也忘了。原理很简单,就是提取图片的主题色,然后用透明度、高斯模糊再加上投影等方式,就可以做出类似的效果。
图片和背景融合
在自适应设计的轮播图功能里,特别是为适配超宽显示器,轮播图的图片往往宽度不够,这时候提取轮播图四边的颜色,就可以实现图片和网页背景融合,类似下面的效果:
背景融合效果
借助今天介绍的 autohue.js,就可以很轻松实现。
开发上手
安装
pnpm i autohue.js
使用例子
import autohue from 'autohue.js'
// promise 化调用
autohue(url, {
threshold: {
primary: 10,
left: 1,
bottom: 12
},
maxSize: 50
})
.then((result) => {
// 获取到主题色、次主题的以及四边的颜色值
console.log(`%c${result.primaryColor}`, 'color: #fff; background: ' + result.primaryColor, 'main')
console.log(`%c${result.secondaryColor}`, 'color: #fff; background: ' + result.secondaryColor, 'sub')
console.log(`%c${result.backgroundColor.left}`, 'color: #fff; background: ' + result.backgroundColor.left, 'bg-left')
console.log(`%c${result.backgroundColor.right}`, 'color: #fff; background: ' + result.backgroundColor.right, 'bg-right')
console.log(`%clinear-gradient to right`, 'color: #fff; background: linear-gradient(to right, ' + result.backgroundColor.left + ', ' + result.backgroundColor.right + ')', 'bg')
bg.value = `linear-gradient(to right, ${result.backgroundColor.left}, ${result.backgroundColor.right})`
})
.catch((err) => console.error(err))
参数说明
参数名 | 说明 |
threshold | 簇阈值,即取均色时的范围大小,一般在 8-12 左右,推荐默认 10 即可。 |
maxSize | 降采样后的图片大小,如传入 100,图片将被压缩到最长边是 100,另一边等比例缩放,值越小处理速度越快,但是精度会越低。 |
之前我也用过类似的颜色提取库,但会遇到一个问题,在手机显示的图片分辨率往往都很高,提取颜色需要遍历所有的像素点,这时候会非常消耗性能,严重的时候甚至会造成卡顿。而 autohue.js 可以在处理前通过 maxSize 先降低采样率,大大提高了提取速度,性能很好。
免费开源说明
autohue.js 是一个免费开源的 JS 图片颜色提取工具库,项目源码采用 MIT 开源协议托管在 Github 上,我们可以免费下载来使用,也可以用在商业项目中。
↓↓点击查看本次分享的网站。
猜你喜欢
- 2025-09-09 JavaScript:history和location对象、JS设计模式系统讲解与应用
- 2025-09-09 3种方式让WebAssembly与JavaScript飞起来!性能提升300%的实战
- 2025-09-09 JavaScript 实现点击/关闭全屏_js取消点击事件的方法
- 2025-09-09 让网站动起来的js库,真漂亮,再也不用写复杂的动画了~wow.js
- 2025-09-09 前端惊魂夜:我竟在CSS里写出了JavaScript?
- 最近发表
-
- 用Python把表格做成web可视化图表
- 太秀了!Excel批量生成条形码和二维码,一个公式就能解决
- 制作Excel电子表格必备的:Excel 2021 mac中文版
- C#/VB.NET:将 HTML 转换为 Excel_如何将html中的数据转换到excel中
- 如何快速写出表格代码?exl表格转换成html代码
- 一看就懂的Excel表格的基本操作的十大技巧
- Java发送包含表格的邮件_java发邮件内容含表格
- Python——Html(表格, , ,、表单 、自定义标签 和)
- 太漂亮了 ! 输出好看的表格,就用这个 Python 库
- AI实用指南:对抗AI幻觉的秘诀与Cursor+Claude 3.7编程Rules技巧
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)