Tạo mã QR Code trong Java với Zxing

Bạn đã quá quen thuộc với việc sử dụng QR Code trong đời sống. Vậy với một develop , thì việc tạo mã QR sẽ như thế nào. Trong bài này mình sẽ cùng tìm hiểu cách tạo 1 mã QR Code sử dụng Google Zxing library.

QR Code là gì ?

Quick Response Code viết tắt là QR Code , chúng thường được gọi là mã vạch ma trận (matrix-barcode) 2 chiều. Được quét bằng smartphone hoặc những thiết bị chuyên dụng

QR Code được tạo bởi Denso Wave(Nhật Bản) - 1 công ty con của Toyota vào năm 1994. Được thiết kế dưới dạng hình vuông, có các góc điểm định vị(Finder patterns) và vùng dữ liệu mã hóa. Bao gồm các ô màu đen sắp xếp dưới 1 nền trắng. Tuy nhiên thì chúng ta cũng có thể tùy biến theo kích thước và bố cục, màu sắc. Thậm chí có thể hiển thị logo trên mã QR Code.

Mã QR Code sử dụng để mã hóa các loại dữ liệu khác nhau, một số ứng dụng của QR Code trong thực tiễn : - Lưu trữ thông tin URL - Lưu trữ mã vận đơn, thông tin hàng hóa để kiểm kê. - Thông tin card visit - Code vé ở các trạm xe khách, tàu - Trong truyền thông quảng cáo ..vvv

Tạo mã QR Code với Zxing

Thư viện sử dụng : Zxing

Zxing là một thư viện barcode scanner cho Android và Java . Ngoài ra có thể port cho các platform khác như PHP, .NET thậm chí cả Javascript..vv. Chi tiết bạn có thể tham khảo ở đây https://github.com/zxing/zxing

Add Zxing dependency tới maven project

Mình hiểu rằng bạn đã có java application project với maven support

Thêm các dependencies trong pom.xml

<!-- Latest version  : 3.3.1 -->
<dependencies>
    <!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>core</artifactId>
        <version>3.3.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.google.zxing/javase -->
    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>javase</artifactId>
        <version>3.3.1</version>
    </dependency>
</dependencies>	

Generate QR Code

Encode string data sang barcode matrix với default settings.

  • String encode : Ha noi mua thu
  • Barcode format : QR
  • Size image output : 200 x 200
    String data = "Ha noi mua thu";
    QRCodeWriter qrCodeWriter = new QRCodeWriter();
    BitMatrix matrix = qrCodeWriter.encode(data, BarcodeFormat.QR_CODE, 200, 200);

Khởi tạo QRCodeWriter với default settings và encode 1 string data sang barcode matrix, ta sẽ có 1 matrix như đoạn code trên.

Việc tiếp theo là xuất matrix data này sang dạng file image hoặc byte array, bằng cách sử dụng MatrixToImageWriter util

    // Write to file image
    String outputFile = "/path/to/output/image.png";
    Path path = FileSystems.getDefault().getPath(outputFile);
    MatrixToImageWriter.writeToPath(matrix, "PNG", path);

    // Write to byte array
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    MatrixToImageWriter.writeToStream(matrix, "PNG", outputStream);
    byte[] pngByteArray = outputStream.toByteArray();

Run và kiểm tra lai kết quả nhé

Full source

    String data = "Ha noi mua thu";
    QRCodeWriter qrCodeWriter = new QRCodeWriter();
    BitMatrix matrix = qrCodeWriter.encode(data, BarcodeFormat.QR_CODE, 200, 200);

    // Write to file image
    String outputFile = "/path/to/output/image.png";
    Path path = FileSystems.getDefault().getPath(outputFile);
    MatrixToImageWriter.writeToPath(matrix, "PNG", path);

Như vậy mình đã hoàn thành việc tạo 1 QR Code đơn giản với Zxing library trên Java. Hy vọng sẽ giúp ích cho các bạn!