class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
guard let img = UIImage(named: "sampleImage") else {
fatalError("Could not load image!!!!")
}
/// goal is to scale twice the PIXEL size
if let scaledImage = imageCIScale(img, dimension: 2.0, outputScale: 1.0) {
print("original image size:", img.size)
print("scaled x 2.0 with 1.0 scale:", scaledImage.size)
}
if let scaledImage = imageCIScale(img, dimension: 2.0, outputScale: UIScreen.main.scale) {
print("original image size:", img.size)
print("scaled x 2.0 with Screen scale:", scaledImage.size)
}
}
func imageCIScale(_ image: UIImage, dimension: CGFloat, outputScale: CGFloat) -> UIImage? {
guard let ciImage = CIImage(image: image) else {
print("no ciImage")
return nil
}
guard let scaleFilter = CIFilter(name: "CILanczosScaleTransform") else {
print("no filter")
return nil
}
scaleFilter.setValue(ciImage, forKey: kCIInputImageKey)
scaleFilter.setValue(ciImage, forKey: kCIInputImageKey)
scaleFilter.setValue(dimension, forKey: kCIInputScaleKey)
scaleFilter.setValue(1.0, forKey: kCIInputAspectRatioKey)
guard let outputImage = scaleFilter.outputImage else { return nil }
let uiImage = UIImage(ciImage: outputImage, scale: outputScale, orientation: image.imageOrientation)
return uiImage
}
}
Comments
0 B
|👍
/👎