This is how I simply download my SVG UIImage from url:
import SDWebImageSVGCoder
import SDWebImage
extension UIImageView {
func setImage(with url: URL, grayScale: Bool = false) {
downloadImage(with: url) { [weak self] image in
self?.image = (grayScale ? image?.grayScale : image)
}
}
func downloadImage(with url: URL, completion: @escaping ImageHandler) {
sd_setImage(
with: url,
placeholderImage: nil,
options: [.allowInvalidSSLCertificates, .avoidAutoSetImage],
context: nil,
progress: nil
) { image, _, _, _ in
completion(image)
}
}
}
extension UIImage {
var grayScale: UIImage? {
let context = CIContext(options: nil)
guard let currentFilter = CIFilter(name: "CIPhotoEffectMono") else {
return nil
}
currentFilter.setValue(CIImage(image: self), forKey: kCIInputImageKey) //CIImage(image: self) is nil, why?
if let output = currentFilter.outputImage,
let cgImage = context.createCGImage(output, from: output.extent) {
return UIImage(cgImage: cgImage, scale: scale, orientation: imageOrientation)
}
return nil
}
}
For every image type (jpeg, png, etc) it simply generates grayScale except of this one (svg). Why?
Also in AppDelegate I set:
let SVGCoder = SDImageSVGCoder.shared
SDImageCodersManager.shared.addCoder(SVGCoder)
Recognized by Mobile Development Collective
2