判断图像,或者图像部分区域是不是在视觉上接近纯色。
本JS的执行依赖于 color-thief.js,本项目中的 color-thief.js 做过一点自定义,使其支持部分区域取色的选择,使用原项目JS可能会没有效果。
使用示意:
<script src="./color-thief.js"></script>
<script src="./image-similarity.js"></script>
全局暴露了2个方法,一个是 imageSimilarityValue()
方法,语法如下:
imageSimilarityValue(src, bounding)
其中:
src
是任意格式的图像地址。
bounding
是图像上局部区域的尺寸设置,格式是数组,需要4个数组项,都是数值,分别表示坐标和宽高,例如 [10, 10, 300, 100]
表示判断原始图像左上角坐标是 10,10,宽高是 300x100 的矩形区域的视觉色彩是否丰富。
返回值是个Promise,通常使用示意。
imageSimilarityValue(src, bounding).then(result => {
// result
});
其中 result
是个对象,格式如下所示:
{
colors: ['rgb(0,0,0)', ...],
similarity: 0-255
}
colors
是图像限制在特定尺寸后选取的4个主要颜色,similarity
是这些颜色的平均相似度值。
第二个方法是imageSimilarity()
方法,语法如下:
imageSimilarity(src, bounding).then(similarity => {
// similarity是数值
});
这里的 similarity
是整数值,范围从0-5,分别表示相似的程度,值越小则越相似。
这是当前JS项目内置的规则:
// 0 极度相似
// 1 相似
// 2 不太相似
// 3 不相似
// 4 差异较大
imageSimilarity()
方法底层依赖的就是 imageSimilarityValue()
方法,这里的 similarity
其实就是把 imageSimilarityValue()
方法中返回的 similarity
值和 50 相处取了个整。
为什么取50,全是作者自己的感觉,所以,这个相似度的阈值选择可能是不准确的,大家可以根据自己实际需求进行调整。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。