Geração de QR Codes em Java: biblioteca ZXing (guia detalhado)

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Geração de QR Codes em Java com ZXing

Os QR Codes se tornaram parte essencial da web moderna e dos aplicativos móveis. Eles são usados para transmitir rapidamente links, dados de contato, texto e outras informações. Em Java, uma das bibliotecas mais populares e estáveis para trabalhar com QR Codes é o ZXing («Zebra Crossing»). Neste artigo, vamos abordar como conectar o ZXing ao projeto, gerar um QR Code e salvá-lo em um arquivo.



O que é ZXing?

ZXing (Zebra Crossing) é uma biblioteca open-source para processamento de códigos de barras unidimensionais e bidimensionais, escrita em Java. Ela suporta leitura e escrita de QR Codes, Data Matrix, PDF417 e muitos outros formatos. A biblioteca é ativamente mantida pela comunidade e usada em milhares de projetos.



Configuração da biblioteca

Para trabalhar com ZXing em um projeto Java (por exemplo, Maven ou Gradle), é necessário adicionar duas dependências principais:

  • core — contém as classes básicas para trabalhar com códigos.
  • javase — contém classes para geração de imagens (PNG, JPEG) e trabalho com AWT.


Exemplo para 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>


Para Gradle, adicione ao build.gradle:

implementation 'com.google.zxing:core:3.5.3'implementation 'com.google.zxing:javase:3.5.3'


Exemplo básico: geração de QR Code

Vamos criar um método simples que recebe um texto e o caminho do arquivo, e então gera um QR Code de tamanho 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("QR Code criado com sucesso!"); } catch (WriterException | IOException e) { System.err.println("Erro ao gerar QR Code: " + e.getMessage()); } }}


Após a execução, um arquivo qrcode.png será criado na raiz do projeto com o QR Code contendo o link para https://pythonlib.ru.



Personalização de cor e tamanho

Por padrão, o QR Code é gerado em preto e branco. Você pode alterar a cor do primeiro plano e do fundo usando 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);

// Cor do primeiro plano (azul), cor do fundo (amarelo) int foregroundColor = 0xFF3366FF; // ARGB int backgroundColor = 0xFFFFFF00; MatrixToImageConfig config = new MatrixToImageConfig(foregroundColor, backgroundColor);

Path path = FileSystems.getDefault().get

Recommendations