蓝紫™
DDZEB 完全自主知识产权图形图像开发平台
开放源码 免费使用 在线运行
图像 Circle Packing 处理,把图像变成圆圈圈的世界。
文件语言大小版本开发者最后更新
lands/circ productionJavaScript2.9KBv1.0.0YB2024-10-21查看
lands/circ source codeJavaScript10.3KBv1.0.0YB2024-10-21查看
一、简要介绍 二、接口方法三、接口事件一、简要介绍

Circle Packing 实际上就是用圆形进行填充。我们这里是用大小不同的圆来模拟图像细节,细节丰富的地方,圆的半径就会小一点,细节不多的地方,圆形就大一些。

Afghan Girl
Circle Packing 示例程序:Afghan Girl

其中的技术原理其实并不复杂,我们先随便找个地方(比如画面中央)生成两个紧挨着(相切)的半径最小的圆,它们相当于种子,然后再生成一个和它们相切的第三个圆,这个圆的半径根据其所覆盖的区域内的颜色分布来进行搜索,我们不希望一个圆覆盖太多细节。圆的颜色就取覆盖区域内的平均色即可。当我们不断重复这个过程,就把整个画面铺满了。

二、接口方法 2.1、circ(source, options = {})

初始化一个 Circle Packing 对象,其中,source 为源图像,options 指定我们的算法选项:

2.2、process()

这是 circ 函数返回对象的接口,它负责对源图像进行分析处理,处理过程中会抛出事件。该函数返回 true 时表示全部处理完毕。

三、接口事件 3.1、oncircle(circle)

生成一个圆的时候就会抛出该事件,我们需要处理该事件进行具体的渲染工作。传入参数 circle 有如下属性: