测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最新发布 | 2017年4月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Jack Flintermann、Jack Flintermann 维护。
PaintBucket 几乎恰好符合其标题的含义。它是在 Swift 中实现 Scanline Flood Fill,这更广为人知的是 MS Paint 油漆桶工具底层的算法(嗯,它使用类似的东西,至少)。
例如,如果您有一堆背景颜色均匀的产品照片,并且想要移除该背景,这可能很有用。或者不是,谁知道呢。
此库在 UIImage
上公开了一个新的类别方法
let image = UIImage(named: "something")!
let imageWithoutBackground = image.pbk_imageByReplacingColorAt((0, 0), withColor: UIColor.clearColor(), tolerance: 10)
其参数应该是自解释的。
这相当快!也就是说,我把我的初始实现(那是相当慢)的速度加快了约 100 倍。尽管如此,它不是,像,瞬间的。除非您的图像非常小,否则您可能应该在一个后台线程上执行此操作。(作为参考,2000x1566 的基准 PNG 在 MacBook pro 的模拟器上处理大约需要 3 秒)。
感谢这位总是令人惊叹的 Mike Ash 提供了使用 NSIndexSet
进行临时存储的想法,并感谢这个我找到的随机网站网站对于扫描线优化的实现想法。话虽如此,这几乎肯定能更快,我很欢迎任何使它加快的 PR。测试套件中有 benchmark,您可以运行来查看您的代码是否有所帮助。
欢迎 PR - 我会请求在盲目发送 PR 之前先打开一个问题,以确保我们的想法是一致的好主意。为了让您开始,如果有人想为这个添加一些聪明反面的抗锯齿,我会非常欢迎。
Carthage: 将 github "jflinter/PaintBucket", ~> 0.1
添加到您的 Cartfile。
CocoaPods: 将 pod 'PaintBucket', '~> 0.1'
添加到您的 Podfile。