用于显示图像直方图的 SwiftUI 视图。
非常简单,只需...
HistogramView(image: myImage)
注意: 同时支持 UIImage
和 NSImage
(通过 HistogramImage
类型别名,取决于平台)。
初始化器支持通道透明度、混合模式和最终图表的缩放比例。
/// The opacity of each channel layer. Default is `1`
public let channelOpacity: CGFloat
/// The blend mode for the channel layers. Default is `.screen`
public let blendMode: BlendMode
/// The scale of each layer. Default is `1`
public let scale: CGFloat
在底层,直方图计算由 Accelerate
的 vImageHistogramCalculation_ARGB8888
(针对 RGB 通道) 执行,所以实际上速度相当快。足够快到可以同步执行(虽然没有在巨大的图像上进行测试)。
每个通道都是一个 SwiftUI
Path
,它使用 埃尔米特插值 来生成一条连续曲线。 插值器的实际实现取自 @FlexMonkey 的实现(Filterpedia 项目的一部分),并进行了调整以用于 Path
而不是 UIBezierPath
。
Vasilis Akoinoglou, alladinian@gmail.com