From 544dac2cf6793bd89533a706d30a40c61b18cba8 Mon Sep 17 00:00:00 2001 From: Francesco <100066266+cranci1@users.noreply.github.com> Date: Sat, 31 May 2025 22:33:26 +0200 Subject: [PATCH] Revert "upscaler fixes?" This reverts commit a84dacded1637e58886f9da7a8ec5befa3814b6f. --- Sora/Managers/ImageUpscaler.swift | 54 +++++++++++++++++-------------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/Sora/Managers/ImageUpscaler.swift b/Sora/Managers/ImageUpscaler.swift index 25dbf15..70643d8 100644 --- a/Sora/Managers/ImageUpscaler.swift +++ b/Sora/Managers/ImageUpscaler.swift @@ -42,12 +42,9 @@ public struct LanczosUpscaleProcessor: ImageProcessor { public let sharpeningIntensity: Float public let sharpeningRadius: Float public var identifier: String { - "me.cranci.lanczos_\(scale)_sharp_\(sharpeningIntensity)_\(sharpeningRadius)" + "com.yourapp.lanczos_\(scale)_sharp_\(sharpeningIntensity)_\(sharpeningRadius)" } - // Reuse CIContext - private static let ciContext = CIContext(options: nil) - public init( scale: CGFloat, sharpeningIntensity: Float = 0.7, @@ -62,31 +59,40 @@ public struct LanczosUpscaleProcessor: ImageProcessor { item: ImageProcessItem, options: KingfisherParsedOptionsInfo ) -> KFCrossPlatformImage? { - let uiImage: KFCrossPlatformImage? = { - switch item { - case .image(let image): return image - case .data(let data): return KFCrossPlatformImage(data: data) - } - }() - guard let cgImage = uiImage?.cgImage else { return nil } + + let inputImage: KFCrossPlatformImage? + switch item { + case .image(let image): + inputImage = image + case .data(let data): + inputImage = KFCrossPlatformImage(data: data) + } + guard let uiImage = inputImage, + let cgImage = uiImage.cgImage else { + return nil + } + let ciInput = CIImage(cgImage: cgImage) let scaleFilter = CIFilter.lanczosScaleTransform() - scaleFilter.inputImage = ciInput - scaleFilter.scale = Float(scale) - scaleFilter.aspectRatio = 1.0 - guard let scaledCI = scaleFilter.outputImage else { return uiImage } - - let unsharp = CIFilter.unsharpMask() - unsharp.inputImage = scaledCI - unsharp.intensity = sharpeningIntensity - unsharp.radius = sharpeningRadius - guard let sharpCI = unsharp.outputImage else { - return KFCrossPlatformImage(ciImage: scaledCI) + scaleFilter.inputImage = ciInput + scaleFilter.scale = Float(scale) + scaleFilter.aspectRatio = 1.0 + guard let scaledCI = scaleFilter.outputImage else { + return uiImage } - guard let outputCG = Self.ciContext.createCGImage(sharpCI, from: sharpCI.extent) else { - return KFCrossPlatformImage(ciImage: sharpCI) + let unsharp = CIFilter.unsharpMask() + unsharp.inputImage = scaledCI + unsharp.intensity = sharpeningIntensity + unsharp.radius = sharpeningRadius + guard let sharpCI = unsharp.outputImage else { + return UIImage(ciImage: scaledCI) + } + + let context = CIContext(options: nil) + guard let outputCG = context.createCGImage(sharpCI, from: sharpCI.extent) else { + return UIImage(ciImage: sharpCI) } return KFCrossPlatformImage(cgImage: outputCG) }