swift-vibrant 1.0.0

swift-vibrant 1.0.0

Bryce Dougherty维护。



  • 作者
  • Bryce Dougherty

swift-vibrant

CI Status Version License Platform

安装

swift-vibrant 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'swift-vibrant'

使用

import swiftVibrant

let image = UIImage(named: "name_of_image")

// Calling from a background thread
Vibrant.from(image).getPalette({ palette in 
    // do stuff with your palette
})
// Calling in main thread
Vibrant.from(image).getPalette()
/// do stuff with your palette here

// Using constructor
let v = Vibrant(image, Vibrant.Options)
v.getPalette({ palette in 
    // do stuff with your palette
})

参考

Vibrant

swift-vibrant 的主类。

Vibrant.from(src: UIImage): Builder

为图像创建一个 Builder。返回一个 Builder 实例。

constructor(src: UIImage, opts: Vibrant.Options)

名称 描述
image 您的 UIImage 实例
opts 选项(可选)
Options
public struct Options {
       var colorCount: Int = 64
       var quality: Int = 5
       var quantizer: Quantizer.quantizer
       var generator: Generator.generator
       var maxDimension: CGFloat?
       var filters: [Filter]
   }
字段 默认 描述
colorCount 64 生成色卡所需的基础调色板中颜色的数量
quality 5 下采样阶段使用的缩放因子。值为 1 表示不进行下采样。如果设置了 maxDimension,则此值将不会使用。
quantizer Quantizer.defaultQuantizer 一个 Quantizer 函数
generator Generator.defaultGenerator 一个 Generator 函数
maxDimension nil 下采样阶段使用的图像更长边的最大大小。该字段将覆盖 quality
filters [] 一个 Filter 数组
quantizer
public typealias quantizer = (_ pixels: [UInt8], _ options: Vibrant.Options)->[Swatch]
generator
public typealias generator = (_ swatches: [Swatch])->Palette
Filter

如果颜色需要保留,则返回 true

public class Filter {
    public typealias filterFunction = (_ red: UInt8, _ green: UInt8, _ blue: UInt8, _ alpha: UInt8)->Bool
    
    var f: filterFunction
}

getPalette(cb: (调色板)->Void)

名称 描述
cb 回调函数。

Vibrant.Builder

用于更改配置并创建 Vibrant 实例的辅助类。可以像链一样使用 Builder 实例的方法

Vibrant.from(src)
  .quality(1)
  .clearFilters()
  // ...
  .getPalette()

constructor(src: UIImage, opts: Vibrant.Options)

参数与 Vibrant.constructor 相同。

quality(q: Int): Builder

opts.quality 设置为 q。返回此 Builder 实例。

maxColorCount(n: Int): Builder

opts.colorCount 设置为 n。返回此 Builder 实例。

maxDimension(d: Int): Builder

opts.maxDimension 设置为 d。返回此 Builder 实例。

addFilter(f: Filter): Builder

添加一个过滤器函数。返回此 Builder 实例。

removeFilter(f: Filter): Builder

移除一个过滤器函数。返回此 Builder 实例。

clearFilters(): Builder

清除所有过滤器。返回此 Builder 实例。

useQuantizer(quantizer: Quantizer.quantizer): Builder

指定要使用的 Quantizer 实现类。返回此 Builder 实例。

useGenerator(generator: Generator.generator): Builder

opts.generator 设置为 generator。返回此 Builder 实例。

build(): Vibrant

构建并返回配置好的 Vibrant 实例。

getPalette(cb: (Palette)->Void)

配置完成后创建一个 Vibrant 实例,并在后台线程中调用其 getPalette 方法。在主线程上调用 cb

getPalette()->Palette

配置完成后创建一个 Vibrant 实例,并在主线程中调用其 getPalette 方法。

Vibrant.Swatch

表示由图像调色板生成的颜色样版。

Vec3

public typealias Vec3<T> = (T, T, T)

RGB

public typealias RGB = (r: UInt8, g: UInt8, b: UInt8)

HSL

public typealias HSL = (r: Double, g: Double, b: Double)

XYZ

public typealias HSL = (r: Double, g: Double, b: Double)

LAB

public typealias HSL = (r: Double, g: Double, b: Double)

constructor(rgb: RGB, population: Int)

内部使用。

名称 描述
rgb [r, g, b]
population 图像中颜色的数量

hsl: HSL

getPopulation(): Int

rgb: RGB

hex: String

返回画板色的十六进制值

getTitleTextColor(): UIColor

返回用于在此 Swatch 颜色上的任何 '标题' 文本的适当颜色。

getBodyTextColor(): UIColor

返回用于在本Swatch颜色之上显示的“body”文本的适当颜色。

Vibrant.Util

实用方法。内部使用。

hexToRgb(hex: string): RGB

rgbToHex(r: UInt8, g: UInt8, b: UInt8): String

hslToRgb(h: Double, s: Double, l: Double): RGB

rgbToHsl(r: UInt8, g: UInt8, b: UInt8): HSL

xyzToRgb(x: Double, y: Double, z: Double): RGB

rgbToXyz(r: UInt8, g: UInt8, b: UInt8): XYZ

xyzToCIELab(x: Double, y: Double, z: Double): LAB

rgbToCIELab(l: UInt8, a: UInt8, b: UInt8): LAB

deltaE94(lab1: Double, lab2: Double): Double

计算CIE delta E 1994的差异,差异在lab1lab2之间。这两种颜色均位于CIE-Lab颜色空间中。在测试中用于比较两种颜色的感知相似性。

rgbDiff(rgb1: RGB, rgb2: RGB): Double

计算rgb1rgb2之间的CIE delta E 1994差异。

hexDiff(hex1: string, hex2: string): 双精度浮点数

计算 hex1hex2 之间的 CIE delta E 1994 差。

getColorDiffStatus(d: 数字): 字符串

获取描述颜色差的字符串。用于测试。

Delta E 感知 返回
<= 1.0 人眼无法感知。 "完美"
1 - 2 通过仔细观察可以感知。 "接近"
2 - 10 一眼即可感知。 "良好"
11 - 49 颜色比相反的颜色更相似。 "相似"
50 - 100 颜色完全相反。 错误

注释

  • 此库使用了 ColorThiefSwift 中的代码,主要参考了他们修改后的中值切割量化 (MMCQ) 算法的实现。
  • 其余的大部分代码都是基于 node-vibrant 调整的。

作者

Bryce Dougherty: [email protected]

致谢

Kazuki Ohara: ColorThiefSwift

Jari Zwarts: node-vibrant

许可

swiftVibrant可在MIT许可下使用。更多信息请查看LICENSE文件。