jsdw_ios/Pods/KingfisherWebP/Sources/WebPSerializer.swift

47 lines
1.5 KiB
Swift

//
// WebPSerializer.swift
// Pods
//
// Created by yeatse on 2016/10/20.
//
//
import CoreGraphics
import Foundation
import Kingfisher
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
/// See ```CacheSerializer/originalDataUsed```
public var originalDataUsed: Bool = true
private init() {}
public func data(with image: KFCrossPlatformImage, original: Data?) -> Data? {
if originalDataUsed {
if let original = original {
return original
}
if let frameData = image.kf.frameSource?.data {
return frameData
}
}
if let original = original, !original.isWebPFormat {
return DefaultCacheSerializer.default.data(with: image, original: original)
}
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)
}
}