Don_Mag icon

CIFilter scaling

Don_Mag | PRO | 02/28/21 02:08:47 PM UTC | 0 ⭐ | 1990 👁️ | Never ⏰ | []
Swift |

1.43 KB

|

None

|

0 👍

/

0 👎

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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎