Skip to content

Instantly share code, notes, and snippets.

@toddhopkinson
Created September 2, 2016 17:03
Show Gist options
  • Save toddhopkinson/51defbec932b7eafadc5a0921880514f to your computer and use it in GitHub Desktop.
Save toddhopkinson/51defbec932b7eafadc5a0921880514f to your computer and use it in GitHub Desktop.
// UIImage+Downsample.swift
// Created by Todd Hopkinson
import UIKit
extension UIImage {
func downsample(reductionAmount: Float) -> UIImage? {
let image = UIKit.CIImage(image: self)
guard let lanczosFilter = CIFilter(name: "CILanczosScaleTransform") else { return nil }
lanczosFilter.setValue(image, forKey: kCIInputImageKey)
lanczosFilter.setValue(NSNumber.init(float: reductionAmount), forKey: kCIInputScaleKey)
guard let outputImage = lanczosFilter.outputImage else { return nil }
let context = CIContext(options: [kCIContextUseSoftwareRenderer: false])
let scaledImage = UIImage(CGImage: context.createCGImage(outputImage, fromRect: outputImage.extent))
return scaledImage
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment