TL;DR
因为有 canvas 的跨域问题,所以如果图片是 vinking.top 以外的域名会无法输出。
之前在取色网站取色的时候,看见网站可以获取背景图片的主要颜色,一直想弄清楚是怎么做到的,经过一晚上的探索,终于弄清楚了其中的原理。
本着能用就行的原则,以及网上的大佬,写了一个可以获取图片的主要颜色的工具,除去一些奇奇怪怪的问题懒得解决其实是不会,还是可以正常的运行。与在图像处理中降低图像位元深度的算法相同,它们的核心原理都是中位切分法。
所谓的中位切分法其实很简单,首先建立一个三维 RGB 空间,把图片的所有像素颜色都放到这个 RGB 空间里,然后划出一个包含了这张图片所有像素颜色的三维 RGB 区域,第三步取这个 RGB 区域最长的边作中位切割,使得切割之后的两个新的 RGB 区域包含相同的像素点,然后反复进行第三步,直到切出长方体数量等于图片主要颜色数为止,再取小长方体区域的像素平均值就可以作为这张图片的主要颜色啦~ 至于为什么要切割,切割是为了尽量让相似的颜色均匀地分布在长方体内,到最后取平均值的时候就可以用一个平均颜色来代表一整个区域的颜色了。
是不是很简单~是不是!是不是!
代码可以参考 CSDN 的 业余_玩家 大佬 ,代码出处:https://blog.csdn.net/qq_28401309/article/details/104209199。
这方法真的是牛批!


