css.v2bo.com这个在线css sprite工具自动识别原理是怎样的?

发布于 2022-09-01 05:29:09 字数 222 浏览 10 评论 0

无意中发现了http://css.v2bo.com这个在线的css sprite工具,试用了一下那个“示例”,发现它能自动框选图标,自动绕开透明区域,感觉非常神奇,但是代码经过压缩了的,不知道怎么实现的,有前端大神解释一下原理吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

○愚か者の日 2022-09-08 05:29:09

具体算法猜不出,但基本原理应该不难呢。

canvas可以得到图片的某一点上的颜色值,自然也可以得到透明度,有这个基础随便怎么玩都行了。

抛砖引玉下:
1、依次对每条边的像素进行检查,有不透明的就扩展那条边,继续检查直到这条边没有不透明像素为止
2、重复上面步骤直到所有边都没有不透明像素为止(后面边的调整可能会影响到前面边的长度)
3、至此,选中的图形一定全部在这个框内了,或者说根本什么都没选中。。。
4、收缩选框的四条边,跟1、2同理,改成有透明像素就收缩那条边,若干次重复后所有边都紧贴选中图形/或者选框面积为0,就是没选中任何东西

可能的优化:
对第1步:找到第一个不透明像素后,后续的检查就在它附近为起点,不透明像素大部分是扎堆出现的。
对第2步:1、2步只扩展不搜索,所以第二次检查某条边是可以保证即使这条边长度(覆盖的像素点)变了,也只加不减,只要检查增长的部分就行了。(选框很大时可能会有点用吧。。。)

没学过计算机图形学,不过直觉上上面的算法应该也是能接受的。

凉宸 2022-09-08 05:29:09

好学好用github
spriteCow

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文