Skip to content

Instantly share code, notes, and snippets.

@henrik-dmg
Created September 30, 2018 11:31
Show Gist options
  • Save henrik-dmg/d35c32f7aefab35f74374cea8f8062a0 to your computer and use it in GitHub Desktop.
Save henrik-dmg/d35c32f7aefab35f74374cea8f8062a0 to your computer and use it in GitHub Desktop.
A function to generate a QR code from Data and then automatically scale it up to the targets size to remove blur
func generateQRCode(from data: Data) -> UIImage? {
if let filter = CIFilter(name: "CIQRCodeGenerator") {
filter.setValue(data, forKey: "inputMessage")
guard let qrCodeImage = filter.outputImage else { return nil }
let scaleX = self.codeView.frame.size.width / qrCodeImage.extent.size.width
let scaleY = self.codeView.frame.size.height / qrCodeImage.extent.size.height
let transform = CGAffineTransform(scaleX: scaleX, y: scaleY)
if let output = filter.outputImage?.transformed(by: transform) {
return UIImage(ciImage: output)
} else {
return nil
}
} else {
return nil
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment