ColorKit

ColorKit 是你在 iOS 上处理颜色的好帮手。

Build MIT License Swift 5.1


特性

主色调

ColorKit 可以轻松找到图片的主色调。 它返回一个包含图片上最常用颜色的调色板。

let dominantColors = try image.dominantColors()

默认情况下,ColorKit 使用迭代过程来确定图像的主色调。 但它也支持通过 K-均值聚类算法 来实现。 选择最适合你的用例的方法。


调色板

ColorKit 允许你从一系列颜色中生成调色板。 它会自动确保基于一些可配置的参数(如对比度)选择最佳颜色。
当与主色调计算结合使用时,此功能特别强大。

let colors = try image.dominantColors()
let palette = ColorPalette(orderedColors: colors, ignoreContrastRatio: true)

以下示例使用调色板来动态匹配文本和背景的颜色,使其与专辑封面相匹配。


平均颜色

要计算图像的平均颜色,只需在 UIImage 实例上调用 averageColor 函数即可。

let averageColor = try image.averageColor()

颜色差异 (DeltaE)

感知颜色差异/比较是颜色科学中常见的问题。
它简单地包括计算两种颜色在人眼看来有多不同。 这通常被称为 DeltaE。

ColorKit 使比较两种颜色变得轻而易举。

let colorDifference = UIColor.green.difference(from: .white) // 120.34

虽然这可能看起来很简单,但简单地使用 RGB 颜色模型通常会产生对人类感知不准确的结果。 这是因为 RGB 不是感知均匀的。

这是一个突出使用 RGB 颜色模型比较颜色局限性的示例。

正如你所看到的,两种绿色(左)之间的差异被认为大于粉红色和灰色(右)之间的差异。 换句话说,该算法认为粉红色和灰色比两种绿色看起来更相似。
这显然与人眼的期望不符。

幸运的是,ColorKit 提供了算法,可以像人眼一样比较颜色:CIE76CIE94CIEDE2000

let colorDifference = UIColor.green.difference(from: .white, using: .CIE94) 

这是与上面相同的示例,使用 CIE94 算法。

CIE94 算法成功地意识到两种绿色(左)比粉红色和灰色(右)看起来更接近。

有关颜色差异的更多信息可以在 这里 找到。


对比度

要计算两种颜色之间的对比度,只需使用 contrastRatio 函数即可。

let contrastRatio = UIColor.green.contrastRatio(with: UIColor.white)

对比度在显示文本时尤其重要。 为了确保每个人都能阅读,ColorKit 可以轻松地让你遵循 WCAG 2 制定的辅助功能指南。


颜色空间转换

当你在颜色空间之间转换颜色时,ColorKit 会帮助你。 它们只需作为 UIColor 上的扩展来支持。
支持 CIELABXYZCMYK


更多

ColorKit 还有很多功能。 这是一个简短的例子列表

let hexValue = UIColor.green.hex
let color = UIColor(hex: "eb4034")
let randomColor = UIColor.random()
let relativeLuminance = UIColor.green.relativeLuminance
let complementaryColor = UIColor.green.complementaryColor

安装

Swift Package Manager

Swift Package Manager 是安装和管理 ColorKit 作为依赖项的最简单方法。
只需在你的 Package.swift 文件中将 ColorKit 添加到你的依赖项中

dependencies: [
    .package(url: "https://github.com/Boris-Em/ColorKit.git")
]

或者,你也可以使用 XCode 将 ColorKit 添加到你现有的项目中,方法是使用 File > Swift Packages > Add Package Dependency...

手动

ColorKit 也可以手动添加到你的项目中。 从 Github 下载 ColorKit 项目,然后将文件夹 ColorKit/ColorKit 拖放到你的 XCode 项目中。


示例项目

使用此存储库中包含的 iOS 示例项目来查找 ColorKit 不同功能的综合示例。


贡献

欢迎为 ColorKit 做出贡献!
对于错误和功能请求,打开一个 issue
要为代码库做出贡献,只需提交一个 pull request


许可

请参阅 License。 你可以自由地进行更改,并在个人或商业项目中使用它。 不需要署名,但非常感谢。 一句“谢谢!”(或类似的话)总是受欢迎的。 如果你在你的项目中使用了 ColorKit,请告诉我们!