Skip to content

Instantly share code, notes, and snippets.

@brennanMKE
Created November 27, 2023 18:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brennanMKE/ed17e803f5f6b22f89e81ee283dcad66 to your computer and use it in GitHub Desktop.
Save brennanMKE/ed17e803f5f6b22f89e81ee283dcad66 to your computer and use it in GitHub Desktop.
Create QR code
import CoreImage
struct QRCode {
static func generateQRCode(from url: String,
width: Double = 512.0,
heigth: Double = 512.0,
foregroundColor: CIColor = .black,
backgroundColor: CIColor = .white) -> CGImage? {
let data = url.data(using: String.Encoding.ascii)
if let filter = CIFilter(name: "CIQRCodeGenerator") {
filter.setValue(data, forKey: "inputMessage")
guard let outputImage = filter.outputImage else { return nil }
let scaleX = width / outputImage.extent.size.width
let scaleY = heigth / outputImage.extent.size.height
let transformedImage = outputImage.transformed(by: CGAffineTransform(scaleX: scaleX, y: scaleY))
if let colorInvertFilter = CIFilter(name: "CIColorInvert") {
colorInvertFilter.setValue(transformedImage, forKey: kCIInputImageKey)
let parameters = [
kCIInputImageKey: colorInvertFilter.outputImage!,
"inputColor0": foregroundColor,
"inputColor1": backgroundColor
]
if let colorFilter = CIFilter(name: "CIFalseColor", parameters: parameters) {
let context = CIContext()
if let cgImg = context.createCGImage(colorFilter.outputImage!, from: colorFilter.outputImage!.extent) {
return cgImg
}
}
}
}
return nil
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment