需求
- 遮罩层取图片相同/相似的颜色作为遮罩
效果
做法
npm库
grade.js
- 所提供图像中前 2 个主色生成的互补渐变
- https://github.com/benhowdle89/grade
COLOR THIEF
-
只需使用Javascript即可从图像中获取调色板。
-
https://github.com/lokesh/color-thief
-
https://lokeshdhakar.com/projects/color-thief
rgbaster.js
- https://github.com/briangonzalez/rgbaster.js
- 一个非常简单、零依赖、基于 promise 的 javascript 库,用于从图像(在浏览器中)中提取主要颜色。
算法
-
基本思路都是获取每一种rgb的出现次数,进行计算分析,如果出现跨域问题还需要后端配合解决
-
https://kuangyx.cn/docs/%E6%96%87%E7%AB%A0/%E5%89%8D%E7%AB%AF/%E6%8F%90%E5%8F%96%E5%9B%BE%E7%89%87%E4%B8%BB%E9%A2%98%E8%89%B2.html
-
也可以直接使用这位大佬写好的
- https://github.com/hubingliang/colorfulImg
- 代码里面的colorfulImg
简单做法
做法1
- 效果
- 代码
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<!-- 原始图 -->
<div class="origin"></div>
<!-- 模糊 -->
<div class="mask"></div>
<style>
div.origin {
position: relative;
width: 320px;
height: 200px;
overflow: hidden;
background-repeat: no-repeat;
background-image: url("https://oss.dreamlove.top/i/2024/02/20/xqsvvg.png");
}
div.mask{
position: relative;
width: 320px;
height: 200px;
overflow: hidden;
/* 关键代码 */
background-repeat: no-repeat;
background-image: url("https://oss.dreamlove.top/i/2024/02/20/xqsvvg.png");
background-size: 20000%;
background-position: center;
}
</style>
</body>
</html>
参考文章
- https://www.cnblogs.com/coco1s/p/14754188.html
- https://www.zhangxinxu.com/wordpress/2014/08/image-dominant-color-get-rgbaster-js/
- https://blog.csdn.net/weixin_64388392/article/details/134426851
后话
- 其实简单做法里面的思路,也可以根据背景来设置字体颜色,大概思路就是字体颜色设置为透明,并利用
background-clip
进行设置