// // DownsampledKFImage.swift // SodaLive // // Created by klaus on 10/23/25. // import SwiftUI import Kingfisher struct DownsampledKFImage: View { let url: URL? let size: CGSize let cacheOriginal: Bool = false var body: some View { KFImage(url) .placeholder { Color.gray.opacity(0.2) } .retry(maxCount: 2, interval: .seconds(1)) .cancelOnDisappear(true) .downsampled(to: size, cacheOriginal: cacheOriginal) .resizable() .scaledToFill() .frame(width: size.width, height: size.height) .clipped() } } extension KFImage { func downsampled( to targetSize: CGSize, scale: CGFloat = UIScreen.main.scale, cacheOriginal: Bool = false ) -> KFImage { let pixel = CGSize( width: targetSize.width * scale, height: targetSize.height * scale ) return self .setProcessor(DownsamplingImageProcessor(size: pixel)) .scaleFactor(scale) .backgroundDecode() .cacheOriginalImage(cacheOriginal) } }