JavaScript 的图片背景色提取开源库,能让图片和背景融为一体

boyanx3个月前技术教程11

图片提取主题色的工具库,可以实现一些酷炫的界面效果。

本文不是 AI 生成,大部分文字都是我自己敲键盘,部分文字摘自 autohue.js 作者主页,请各位放心舒适阅读。

autohue.js 简介

autohue.js 是一个图片背景色提取库,基于提出来的颜色,可以实现很多看起来比较惊艳的效果。

主要功能

  1. 提取图片的主题色和次主题色,也就是面积占比最大的两个颜色值;
  2. 提取图片四边颜色(即图片边缘颜色,渐变时,需要边缘颜色来设置背景色)

提取到主题色有什么作用?

卡片、海报中的颜色遮罩

多年以前,卡片式设计很流行,我在工作上就接到一个需求,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 即可。
当需要取精准边缘颜色时,可以单独设置 left \ right 等 为 1,支持两种格式:number | { primary?: number; left?: number; right?: number; top?: number; bottom?: number }

maxSize

降采样后的图片大小,如传入 100,图片将被压缩到最长边是 100,另一边等比例缩放,值越小处理速度越快,但是精度会越低。

之前我也用过类似的颜色提取库,但会遇到一个问题,在手机显示的图片分辨率往往都很高,提取颜色需要遍历所有的像素点,这时候会非常消耗性能,严重的时候甚至会造成卡顿。而 autohue.js 可以在处理前通过 maxSize 先降低采样率,大大提高了提取速度,性能很好。

免费开源说明

autohue.js 是一个免费开源的 JS 图片颜色提取工具库,项目源码采用 MIT 开源协议托管在 Github 上,我们可以免费下载来使用,也可以用在商业项目中。

↓↓点击查看本次分享的网站。

autohue.js - 基于 JavaScript 开发的图片背景色提取开源库,能让图片和背景融为一体|那些免费的砖

相关文章

5个CSS新功能,简单好用还超省时间

你是不是觉得自己CSS用得很熟了?Flex布局、Grid布局都玩得转,让元素居中更是小菜一碟。但CSS的世界一直在进步,很多新的特性能帮你省下大量写代码和调试的时间,解决以前需要JavaScript或...

JS 打造仿腾讯影视轮播导航_js 打造仿腾讯影视轮播导航的软件

首页 Banner 不是简单的「几张图轮播」,而是「大图 + 侧边导航 + 自动播放 + 手动介入」的复合组件。本文用 JS原生代码实现一条无依赖、可复用、可扩展的影视轮播链路,涵盖数据驱动、事件委托...

大连网站建设:JavaScript 交互设计技巧

在大连网站建设领域,JavaScript 是实现丰富交互设计的核心技术,能显著提升用户体验。作为大连爱得科技的前端交互设计师,我积累了一些实用的 JavaScript 交互设计技巧,在此与大家分享。其...

JavaScript全解析——Map和Set数据结构和ES6模块化语法

Map和Set数据结构●ES6 新增的两种数据结构●共同的特点: 不接受重复数据Set数据结构●是一个 类似于 数组的数据结构●按照索引排列的数据结构创建 Set 数据结构语法: var s = ne...

可以用一行JS代码将PC网站移动化的“云适配”开源跨屏前端开发框架,将推出Amaze UI

我们之前报道过的“云适配”是一家可以用一行JS代码将PC网站移动化的技术公司。在他们用一行代码做适配的过程中,积累了一套跨屏的前端常用网页组件,而最近,他们想把这套组件开源出来,让前端开发者都可以免费...

独立站移动端加载慢?别只优化图片!这3个隐藏项才是真凶

上周有个做快时尚的客户吐槽:“PC端加载0.8秒,手机端要5.2秒,用户全跑了!”我一查,图片压缩了,CDN也开了,问题居然出在这三个地方——1. 字体文件太大很多独立站用了“好看的手写字体”,但字体...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。