Breve antefatto: mi chiedono di generare dei qrCode 600×600 per una lista di URL. Apro Xcode, creo un nuovo Playground e in dieci minuti preparo un programmino in Swift 😚
Generare un qrCode con CoreImage è questioni di pochi minuti:
import CoreImage
import CoreImage.CIFilterBuiltins
let qrCodeFilter = CIFilter.qrCodeGenerator()
qrCodeFilter.setValue("Hello,World!".data(using: .utf8, allowLossyConversion: false), forKey: "inputMessage")
if let rawQRCode = qrCodeFilter.outputImage {
let scale = 600 / rawQRCode.extent.width
let qrCodeOutput = rawQRCode.transformed(by: CGAffineTransform(scaleX: scale, y: scale))
//salviamo un png nella home dell'utente
//per iOS utilizzare un percorso diverso... homeDirectoryForCurrentUser è disponibile solo su macOS
try! CIContext().writePNGRepresentation(of: qrCodeOutput,
to: FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent("qrcode.png"),
format: CIFormat.RGBA16,
colorSpace: CGColorSpace(name: CGColorSpace.sRGB)!,
options: [:])
}