Trang chủHướng dẫnHướng dẫn tạo QR bằng Java đơn giản, nhanh chóng
Java

Hướng dẫn tạo QR bằng Java đơn giản, nhanh chóng

CyStack blog 4 phút để đọc
CyStack blog20/08/2025
Locker Avatar

Bao Tran

Web Developer

Locker logo social
Reading Time: 4 minutes

Chào bạn, hôm nay chúng ta sẽ cùng khám phá một chủ đề thú vị: lập trình tạo QR bằng Java. Nếu bạn là một người yêu công nghệ và luôn cập nhật những xu hướng mới, bạn chắc chắn đã thấy mã QR ở khắp mọi nơi từ các blog, website cho đến những địa điểm công cộng. Sự phổ biến của chúng thể hiện rõ nét trong các ứng dụng di động, nơi bạn chỉ cần dùng ứng dụng quét mã QR để đọc thông tin văn bản hoặc chuyển hướng đến một trang web nếu đó là URL.

tạo QR bằng Java

Tôi tình cờ tìm hiểu về công nghệ này gần đây và thực sự thấy nó rất hấp dẫn. Nếu bạn muốn tìm hiểu sâu hơn về mã QR, bạn có thể tìm thấy rất nhiều thông tin hữu ích tại trang Wikipedia về Mã QR.

Lập trình tạo QR bằng Java

Khi bắt gặp hình ảnh mã QR xuất hiện dày đặc trên các website, tôi bắt đầu tìm kiếm một công cụ tạo mã QR bằng Java. Tôi đã xem xét một số API mã nguồn mở và thấy zxing nổi lên như một lựa chọn đơn giản và tối ưu nhất để sử dụng. Nếu bạn muốn tạo một hình ảnh mã QR, chúng ta chỉ cần thư viện core của nó. Bạn hãy thêm dependency sau vào dự án Maven của mình:

<dependency>
	<groupId>com.google.zxing</groupId>
	<artifactId>core</artifactId>
	<version>3.3.2</version>
</dependency>

Nếu bạn muốn đọc hình ảnh QR thông qua dòng lệnh, chúng ta cần sử dụng thư viện JavaSE của zxing. Bạn có thể thêm dependency sau cho mục đích này:

<dependency>
	<groupId>com.google.zxing</groupId>
	<artifactId>javase</artifactId>
	<version>3.3.2</version>
</dependency>

Điều này cũng báo hiệu bạn sẽ cần thêm hai thư viện bổ sung khác để chạy ứng dụng từ dòng lệnh. Chúng ta sẽ cùng tìm hiểu cách thêm các file JAR này vào classpath để chạy ứng dụng client đọc mã QR ở phần sau của bài hướng dẫn.

Ví dụ zxing tạo ảnh mã QR

Đây là chương trình bạn có thể sử dụng để tạo ảnh mã QR với API của zxing. File GenerateQRCode.java của chúng ta sẽ trông như thế này:

package com.journaldev.qrcode.generator;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;

import javax.imageio.ImageIO;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

public class GenerateQRCode {

	public static void main(String[] args) throws WriterException, IOException {
		String qrCodeText = "<https://www.journaldev.com>";
		String filePath = "JD.png";
		int size = 125;
		String fileType = "png";
		File qrFile = new File(filePath);
		createQRImage(qrFile, qrCodeText, size, fileType);
		System.out.println("DONE");
	}

	private static void createQRImage(File qrFile, String qrCodeText, int size, String fileType)
			throws WriterException, IOException {
		// Tạo ByteMatrix cho mã QR mã hóa chuỗi đã cho
		Hashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<>();
		hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
		QRCodeWriter qrCodeWriter = new QRCodeWriter();
		BitMatrix byteMatrix = qrCodeWriter.encode(qrCodeText, BarcodeFormat.QR_CODE, size, size, hintMap);
		// Tạo BufferedImage để chứa mã QR
		int matrixWidth = byteMatrix.getWidth();
		BufferedImage image = new BufferedImage(matrixWidth, matrixWidth, BufferedImage.TYPE_INT_RGB);
		image.createGraphics();

		Graphics2D graphics = (Graphics2D) image.getGraphics();
		graphics.setColor(Color.WHITE);
		graphics.fillRect(0, 0, matrixWidth, matrixWidth);
		// Vẽ và lưu hình ảnh bằng ByteMatrix
		graphics.setColor(Color.BLACK);

		for (int i = 0; i < matrixWidth; i++) {
			for (int j = 0; j < matrixWidth; j++) {
				if (byteMatrix.get(i, j)) {
					graphics.fillRect(i, j, 1, 1);
				}
			}
		}
		ImageIO.write(image, fileType, qrFile);
	}

}

Chương trình này tạo ra một file ảnh mã QR có tên JD.png, trỏ đến URL của JournalDev. Bạn có thể sử dụng ứng dụng quét mã QR trên điện thoại di động để kiểm tra. Nó sẽ dẫn bạn đến trang chủ của JournalDev.

Ví dụ zxing đọc mã QR

Nếu bạn chưa có ứng dụng di động để kiểm tra, đừng lo lắng. Bạn hoàn toàn có thể đọc mã QR bằng API zxing thông qua dòng lệnh. Dưới đây là lệnh để đọc file ảnh mã QR:

$java -cp $HOME/.m2/repository/com/google/zxing/javase/3.3.2/javase-3.3.2.jar:.:$HOME/.m2/repository/com/google/zxing/core/3.3.2/core-3.3.2.jar:$HOME/.m2/repository/com/beust/jcommander/1.72/jcommander-1.72.jar:$HOME/.m2/repository/com/github/jai-imageio/jai-imageio-core/1.3.1/jai-imageio-core-1.3.1.jar com.google.zxing.client.j2se.CommandLineRunner JD.png

Lưu ý các file JAR bổ sung trong classpathzxing phụ thuộc (ví dụ: jcommander, jai-imageio-core). Lệnh này sẽ hiển thị nội dung của mã QR ngay trên terminal của bạn.

Chúng ta đã cùng nhau trải nghiệm cả quá trình tạo và đọc mã

Kết luận

Tóm lại, chúng ta đã cùng nhau khám phá cách sử dụng thư viện zxing để tạo QR bằng Java. Bạn đã biết cách thêm các dependencies cần thiết vào dự án Maven, triển khai mã để tạo ra một ảnh QR tùy chỉnh từ một chuỗi văn bản hoặc URL và thậm chí là đọc lại nội dung của nó ngay trên dòng lệnh. Bạn có thể tích hợp chức năng tạo mã QR vào các ứng dụng quản lý tài sản, hệ thống bán lẻ để theo dõi sản phẩm, hoặc sử dụng mã QR để đơn giản hóa quá trình đăng nhập và xác thực người dùng.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất