Générateur de QR codes en Swift (iOS/macOS) : bibliothèque EFQRCode
Les QR codes sont devenus une partie intégrante des applications modernes — de l'authentification au transfert de liens et de contacts. Si vous développez pour iOS ou macOS en Swift, vous n'avez pas besoin d'écrire des algorithmes de codage complexes à partir de zéro. La bibliothèque prête à l'emploi EFQRCode fournit une API pratique pour créer, lire et personnaliser des QR codes. Dans cet article, nous examinerons ses fonctionnalités, son installation et des exemples d'utilisation.
Qu'est-ce que EFQRCode ?
EFQRCode est une bibliothèque open source écrite en Swift. Elle prend en charge iOS (à partir de la version 9.0) et macOS (10.11+). Principales fonctionnalités :
- Génération de QR codes à partir de chaînes, d'URL, de contacts vCard et de texte.
- Personnalisation de la couleur, du fond, de la taille et du niveau de correction d'erreurs.
- Ajout de filigranes (logos, images) au centre du QR code.
- Création de QR codes animés (GIF).
- Décodage de QR codes à partir d'images.
La bibliothèque utilise le CIFilter intégré de Core Image, mais ajoute de nombreuses surcouches pratiques et personnalisations.
Installation via Swift Package Manager
Ajoutez le paquet EFQRCode à votre projet Xcode :
// Dans Xcode : File → Add Packages...// Collez l'URL du dépôt :https://github.com/EFPrefix/EFQRCode.git// Choisissez la version (recommandé "Up to Next Major")Ou ajoutez manuellement la dépendance dans Package.swift :
dependencies: [ .package(url: "https://github.com/EFPrefix/EFQRCode.git", from: "6.0.0")]Exemple de base de génération de QR code
La façon la plus simple de créer un QR code à partir d'une chaîne :
import EFQRCode
// Création d'un QR code à partir d'un texteif let image = EFQRCode.generate( content: "https://pythonlib.ru", size: EFIntSize(width: 300, height: 300)) { // Utilisez image (CGImage) pour l'affichage // Par exemple, dans UIImageView sur iOS : let uiImage = UIImage(cgImage: image) imageView.image = uiImage}Le résultat est un QR code noir et blanc standard de 300x300 pixels.
Personnalisation de la couleur et du fond
Vous pouvez définir une couleur personnalisée pour le premier plan et le fond :
import EFQRCode
let qrImage = EFQRCode.generate( content: "Hello, Swift!", size: EFIntSize(width: 400, height: 400), backgroundColor: UIColor.yellow.cgColor, foregroundColor: UIColor.blue.cgColor, inputCorrectionLevel: .h // correction d'erreurs maximale)Le paramètre inputCorrectionLevel accepte les valeurs .l (7%), .m (15%), .q (25%), .h (30%). Plus le niveau est élevé, plus les données peuvent être récupérées en cas de dommage.
Ajout d'un logo (filigrane)
Pour placer un logo au centre du QR code, utilisez la méthode generateWithWatermark :
import EFQRCode
let watermarkImage = UIImage(named: "logo")?.cgImagelet qrWithLogo = EFQRCode.generateWithWatermark( content: "https://pythonlib.ru", size: EFIntSize(width: 500, height: 500), watermark: watermarkImage, watermarkMode: .center)Important : le logo ne doit pas occuper plus de 30% de la surface, sinon le code pourrait ne pas être lisible.
Création d'un QR code animé (GIF)
EFQRCode prend en charge la génération de QR codes animés. Par exemple, vous pouvez créer un GIF avec des couleurs changeantes :
import EFQRCode
let qrCodeGIF = EFQRCode.generateGIF( content: "Animated QR", size: EFIntSize(width: 200, height: 200), data: [someData] // tableau d'images)Pour une animation simple, vous pouvez utiliser des couleurs prédéfinies. Plus de détails dans la documentation de la bibliothèque.
Décodage d'un QR code à partir d'une image
Pour lire un QR code à partir d'une photo ou d'une capture d'écran :
import Aussi dans la bibliothèque
Envoi d'email en Rust : bibliothèques lettre et mailparse pour les courriels
Crossbeam Rust : guide complet avec exemples concrets
Limitation de débit en Rust : bibliothèques governor, leaky-bucket et middleware pour serveurs web
Blade PHP : guide complet avec exemples pratiques