Génération de codes QR en Java avec ZXing
Les codes QR sont devenus une partie intégrante du web moderne et des applications mobiles. Ils sont utilisés pour transmettre rapidement des liens, des coordonnées, du texte et d'autres informations. En Java, l'une des bibliothèques les plus populaires et les plus stables pour travailler avec les codes QR est ZXing (« Zebra Crossing »). Dans cet article, nous allons voir comment ajouter ZXing à un projet, générer un code QR et l'enregistrer dans un fichier.
Qu'est-ce que ZXing ?
ZXing (Zebra Crossing) est une bibliothèque open-source pour le traitement des codes-barres unidimensionnels et bidimensionnels, écrite en Java. Elle prend en charge la lecture et l'écriture des codes QR, Data Matrix, PDF417 et de nombreux autres formats. La bibliothèque est activement maintenue par la communauté et utilisée dans des milliers de projets.
Ajout de la bibliothèque
Pour travailler avec ZXing dans un projet Java (par exemple, Maven ou Gradle), vous devez ajouter deux dépendances principales :
core— contient les classes de base pour travailler avec les codes.javase— contient les classes pour la génération d'images (PNG, JPEG) et le travail avec AWT.
Exemple pour Maven (pom.xml) :
<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.5.3</version></dependency><dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.5.3</version></dependency>Pour Gradle, ajoutez dans build.gradle :
implementation 'com.google.zxing:core:3.5.3'implementation 'com.google.zxing:javase:3.5.3'Exemple de base : génération d'un code QR
Créons une méthode simple qui prend un texte et un chemin de fichier, puis génère un code QR de 300x300 pixels.
import com.google.zxing.BarcodeFormat;import com.google.zxing.WriterException;import com.google.zxing.client.j2se.MatrixToImageWriter;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.QRCodeWriter;
import java.io.IOException;import java.nio.file.FileSystems;import java.nio.file.Path;
public class QRCodeGenerator {
public static void generateQRCode(String text, String filePath) throws WriterException, IOException { QRCodeWriter qrCodeWriter = new QRCodeWriter(); BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, 300, 300);
Path path = FileSystems.getDefault().getPath(filePath); MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path); }
public static void main(String[] args) { try { generateQRCode("https://pythonlib.ru", "qrcode.png"); System.out.println("Code QR créé avec succès !"); } catch (WriterException | IOException e) { System.err.println("Erreur lors de la génération du code QR : " + e.getMessage()); } }}Après l'exécution, un fichier qrcode.png apparaîtra à la racine du projet avec un code QR contenant le lien vers https://pythonlib.ru.
Personnalisation des couleurs et de la taille
Par défaut, le code QR est généré en noir et blanc. Vous pouvez modifier la couleur du premier plan et de l'arrière-plan en utilisant MatrixToImageConfig :
import com.google.zxing.client.j2se.MatrixToImageConfig;
public static void generateColoredQR(String text, String filePath) throws WriterException, IOException { QRCodeWriter writer = new QRCodeWriter(); BitMatrix matrix = writer.encode(text, BarcodeFormat.QR_CODE, 400, 400);
// Couleur du premier plan (bleu), couleur de l'arrière-plan (jaune) int foregroundColor = 0xFF3366FF; // ARGB int backgroundColor = 0xFFFFFF00; MatrixToImageConfig config = new MatrixToImageConfig(foregroundColor, backgroundColor);
Path path = FileSystems.getDefault().get Aussi dans la bibliothèque
ORM pour C++ : comparaison et exemples d'utilisation (ODB, SOCI, SQLiteCpp)
FastEndpoints C# (.NET) : guide complet avec exemples
Travail avec les images en C++ : bibliothèques CImg et STB Image
Bibliothèque WebSocket Java : Tyrus — implémentation JSR 356 pour le temps réel