WebPSerializer.swift 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. //
  2. // WebPSerializer.swift
  3. // Pods
  4. //
  5. // Created by yeatse on 2016/10/20.
  6. //
  7. //
  8. import Kingfisher
  9. import CoreGraphics
  10. public struct WebPSerializer: CacheSerializer {
  11. public static let `default` = WebPSerializer()
  12. /// Whether the image should be serialized in a lossy format. Default is false.
  13. public var isLossy: Bool = false
  14. /// The compression quality when converting image to a lossy format data. Default is 1.0.
  15. public var compressionQuality: CGFloat = 1.0
  16. private init() {}
  17. public func data(with image: KFCrossPlatformImage, original: Data?) -> Data? {
  18. if let original = original, !original.isWebPFormat {
  19. return DefaultCacheSerializer.default.data(with: image, original: original)
  20. } else {
  21. let qualityInWebp = min(max(0, compressionQuality), 1) * 100
  22. return image.kf.normalized.kf.webpRepresentation(isLossy: isLossy, quality: Float(qualityInWebp))
  23. }
  24. }
  25. public func image(with data: Data, options: KingfisherParsedOptionsInfo) -> KFCrossPlatformImage? {
  26. return WebPProcessor.default.process(item: .data(data), options: options)
  27. }
  28. }