A SwiftUI view for displaying image histograms.
It's as simple as:
HistogramView(image: myImage)Note: Both UIImage & NSImage are supported (by the HistogramImage typealias, depending on the platform).
The initializer supports channel opacity, blendMode and scale for the final graph.
/// 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: CGFloatUnder the hood the histogram calculation is performed by Accelerate's vImageHistogramCalculation_ARGB8888 for RGB channels, so it's pretty good actually.
Fast enough to be perfomed synchronously (although didn't test it on gigantic images).
Each channel is a SwiftUI Path that uses Hermite interpolation for generating a continous curve.
The actual implementation for the interpolator is taken from @FlexMonkey's implementation (part of the Filterpedia project) and adapted to be used on Path instead of UIBezierPath.
Vasilis Akoinoglou, alladinian@gmail.com
