canvas实现提取图片主题色的方法-创新互联

这篇文章将为大家详细讲解有关canvas实现提取图片主题色的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、成都网站建设、左贡网络推广、微信小程序开发、左贡网络营销、左贡企业策划、左贡品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;成都创新互联为所有大学生创业者提供左贡建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com

一、思路与准备

利用canvas获取图像像素信息,然后用某种算法将主题颜色提取出来。

1.1 了解Canvas画布真实像素原理

MDN: 事实上,你可以直接通过getImageData,返回一个imageData对象,获取场景像素数据。

imageData对象包含下列几个只读属性:

width:图片宽度,单位是像素

height:图片高度,单位是像素

data:Uint8ClampedArray类型的一维数组,包含着RGBA格式的整型数据,范围在0至255之间(包括255)。

data属性返回一个 Uint8ClampedArray,它可以被使用作为查看初始像素数据。每个像素用4个 1 bytes值(按照红,绿,蓝和透明值的顺序,"RGBA"格式) 来代表。每个颜色值部份用0至255来代表。每个部分被分配到一个在数组内连续的索引,左上角像素的红色部分在数组的索引0位置。像素从左到右被处理,然后往下,遍历整个数组。
Uint8ClampedArray  包含高度 × 宽度 × 4 bytes数据,索引值从0到(高度×宽度×4)-1

1.2 了解中位切分法 (Median cut)

中位切分法通常是在图像处理中降低图像位元深度的算法,可用来将高位的图转换位低位的图,如将24bit的图转换为8bit的图。我们也可以用来提取图片的主题色,其原理是是将图像每个像素颜色看作是以R、G、B为坐标轴的一个三维空间中的点,由于三个颜色的取值范围为0~255,所以图像中的颜色都分布在这个颜色立方体内。如图所示:

canvas实现提取图片主题色的方法

之后将RGB中最长的一边从颜色统计的中位数一切为二,使得到的两个长方体所包含的像素数量相同,如下图所示重复这个过程直到切出长方体数量等于主题色数量为止,最后取每个长方体的中点即可。

canvas实现提取图片主题色的方法

在实际使用中如果只是按照中点进行切割,会出现有些长方体的体积很大但是像素数量很少的情况。解决的办法是在切割前对长方体进行优先级排序,排序的系数为体积 * 像素数。这样就可以基本解决此类问题了。

其中color-thief库就是基于中位切分法实现的。

关于canvas实现提取图片主题色的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

网站名称:canvas实现提取图片主题色的方法-创新互联
文章路径:https://www.cdcxhl.com/article40/deioeo.html

成都网站建设公司_创新互联,为您提供响应式网站全网营销推广品牌网站建设云服务器关键词优化网站收录

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都做网站