// // WebPSerializer.swift // Pods // // Created by yeatse on 2016/10/20. // // import Kingfisher import CoreGraphics public struct WebPSerializer: CacheSerializer { public static let `default` = WebPSerializer() /// Whether the image should be serialized in a lossy format. Default is false. public var isLossy: Bool = false /// The compression quality when converting image to a lossy format data. Default is 1.0. public var compressionQuality: CGFloat = 1.0 private init() {} public func data(with image: KFCrossPlatformImage, original: Data?) -> Data? { if let original = original, !original.isWebPFormat { return DefaultCacheSerializer.default.data(with: image, original: original) } else { let qualityInWebp = min(max(0, compressionQuality), 1) * 100 return image.kf.normalized.kf.webpRepresentation(isLossy: isLossy, quality: Float(qualityInWebp)) } } public func image(with data: Data, options: KingfisherParsedOptionsInfo) -> KFCrossPlatformImage? { return WebPProcessor.default.process(item: .data(data), options: options) } }