PaintBucket 0.2

PaintBucket 0.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2017年4月
SwiftSwift 版本3.0
SPM支持 SPM

Jack FlintermannJack Flintermann 维护。



PaintBucket

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。