Yaklaşım # 1
Kullanım Alamofireimage yönettiği "imageWithAppliedCoreImageFilter" UIImage uzantısı.
let imageView = UIImageView(frame: frame)
let URL = NSURL(string: "https://httpbin.org/image/png")!
let placeholderImage = UIImage(named: "placeholder")!
let color = CIColor(color: UIColor.grayColor()) // or whatever color desired
let intensity = 1.0 // 1.0 is the default, but setting it manually here to allow adjustment
let filter = CoreImageFilter(filterName: "CIColorMonochrome", parameters: ["inputColor": color, "inputIntensity" : intensity])
imageView.af_setImageWithURL(
URL,
placeholderImage: placeholderImage,
filter: filter
)
Eğer': Ama nedense onlar
public struct CoreImageFilter: ImageFilter {
let filterName: String
let parameters: [String: AnyObject]
public init(filterName : String, parameters : [String : AnyObject]?) {
self.filterName = filterName
self.parameters = parameters ?? [:]
}
public var filter: UIImage -> UIImage {
return { image in
return image.af_imageWithAppliedCoreImageFilter(self.filterName, parameters: self.parameters) ?? image
}
}
Kullanımı Alamofireimage kullanıcıya aşina olmalıdır ... Bu filtre seçeneğine kolay protokol erişimi sağlamak, bu yüzden bir tane oluşturun izin vermeyin ...
let filter = CoreImageFilter(filterName: "CIPhotoEffectTonal", parameters: nil)
veya
CIColorMonochrome filtresi (Ben değil), aşağıda başka seçenekleri vardır memnun değiliz
let filter = CoreImageFilter(filterName: "CIPhotoEffectNoir", parameters: nil)
İşte Apple dev sitesinde complete list of available filters için bir bağlantı var.
Yaklaşım # 2
böyle What is the best Core Image filter to produce black and white effects? en beğenilen cevap olarak, özel bir filtre bulun.
Ardından bir uzantı oluşturun. Aşağıdaki kodun gövdesi için Shmidt ve DerGote kredileri.
extension UIImage {
public func ff_imageFilteredToGrayScale() -> UIImage? {
let context = CIContext(options: nil)
let ciImage = CoreImage.CIImage(image: self)!
// Set image color to b/w
let bwFilter = CIFilter(name: "CIColorControls")!
bwFilter.setValuesForKeysWithDictionary([kCIInputImageKey:ciImage, kCIInputBrightnessKey:NSNumber(float: 0.0), kCIInputContrastKey:NSNumber(float: 1.1), kCIInputSaturationKey:NSNumber(float: 0.0)])
let bwFilterOutput = (bwFilter.outputImage)!
// Adjust exposure
let exposureFilter = CIFilter(name: "CIExposureAdjust")!
exposureFilter.setValuesForKeysWithDictionary([kCIInputImageKey:bwFilterOutput, kCIInputEVKey:NSNumber(float: 0.7)])
let exposureFilterOutput = (exposureFilter.outputImage)!
// Create UIImage from context
let bwCGIImage = context.createCGImage(exposureFilterOutput, fromRect: ciImage.extent)
let resultImage = UIImage(CGImage: bwCGIImage, scale: 1.0, orientation: self.imageOrientation)
return resultImage
}
}
ve yapı
...
public struct GrayScaleFilter: ImageFilter {
public init() {
}
public var filter: UIImage -> UIImage {
return { image in
return image.ff_imageFilteredToGrayScale() ?? image
}
}
}
Ve nihayet, Kullanımı ...
let imageView = UIImageView(frame: frame)
let URL = NSURL(string: "https://httpbin.org/image/png")!
let placeholderImage = UIImage(named: "placeholder")!
let filter = GrayScaleFilter()
imageView.af_setImageWithURL(
URL,
placeholderImage: placeholderImage,
filter: filter
)