Sora/Sora/Utils/Cache/JPEGCompressionProcessor.swift
2025-06-02 11:47:16 +02:00

37 lines
1.2 KiB
Swift

//
// JPEGCompressionProcessor.swift
// Sora
//
// Created by Francesco on 02/06/25.
//
import UIKit
import Kingfisher
struct JPEGCompressionProcessor: ImageProcessor {
let identifier: String
let compressionQuality: CGFloat
init(compressionQuality: CGFloat) {
self.compressionQuality = compressionQuality
self.identifier = "me.cranci.JPEGCompressionProcessor_\(compressionQuality)"
}
func process(item: ImageProcessItem, options: KingfisherParsedOptionsInfo) -> KFCrossPlatformImage? {
switch item {
case .image(let image):
guard let data = image.jpegData(compressionQuality: compressionQuality),
let compressedImage = UIImage(data: data) else {
return image
}
return compressedImage
case .data(let data):
guard let image = UIImage(data: data) else { return nil }
guard let compressedData = image.jpegData(compressionQuality: compressionQuality),
let compressedImage = UIImage(data: compressedData) else {
return image
}
return compressedImage
}
}
}