2 Setting
import UIKit
import CoreImage
let sharedContext = CIContext[options: [.useSoftwareRenderer : false]]
// Technique
# 4
func resizedImage[at url: URL, scale: CGFloat, aspectRatio: CGFloat] -> UIImage? {
guard let image = CIImage[contentsOf: url] else {
return nil
}
let filter = CIFilter[name: "CILanczosScaleTransform"]
filter?.setValue[image, forKey: kCIInputImageKey]
filter?.setValue[scale, forKey: kCIInputScaleKey]
filter?.setValue[aspectRatio, forKey: kCIInputAspectRatioKey]
guard let outputCIImage = filter?.outputImage,
let outputCGImage = sharedContext.createCGImage[outputCIImage,
from: outputCIImage.extent]
else {
return nil
}
return UIImage[cgImage: outputCGImage]
}
1 to
import UIKit
import CoreImage
let sharedContext = CIContext[options: [.useSoftwareRenderer : false]]
// Technique
# 4
func resizedImage[at url: URL, scale: CGFloat, aspectRatio: CGFloat] -> UIImage? {
guard let image = CIImage[contentsOf: url] else {
return nil
}
let filter = CIFilter[name: "CILanczosScaleTransform"]
filter?.setValue[image, forKey: kCIInputImageKey]
filter?.setValue[scale, forKey: kCIInputScaleKey]
filter?.setValue[aspectRatio, forKey: kCIInputAspectRatioKey]
guard let outputCIImage = filter?.outputImage,
let outputCGImage = sharedContext.createCGImage[outputCIImage,
from: outputCIImage.extent]
else {
return nil
}
return UIImage[cgImage: outputCGImage]
}
2 on the options passed on
import UIKit
import CoreGraphics
// Technique
# 2
func resizedImage[at url: URL, for size: CGSize] -> UIImage? {
guard let imageSource = CGImageSourceCreateWithURL[url as NSURL, nil],
let image = CGImageSourceCreateImageAtIndex[imageSource, 0, nil]
else {
return nil
}
let context = CGContext[data: nil,
width: Int[size.width],
height: Int[size.height],
bitsPerComponent: image.bitsPerComponent,
bytesPerRow: 0,
space: image.colorSpace ?? CGColorSpace[name: CGColorSpace.sRGB]!,
bitmapInfo: image.bitmapInfo.rawValue]
context?.interpolationQuality = .high
context?.draw[image, in: CGRect[origin: .zero, size: size]]
guard let scaledImage = context?.makeImage[] else { return nil }
return UIImage[cgImage: scaledImage]
}
9 creation yielded results an order of magnitude slower than base results.