简体   繁体   English

如何使用 JAVA 生成带有一些文本的二维码?

[英]How to generate QR code with some text using JAVA?

I want to generate QR code with some text using JAVA like this.我想像这样使用 JAVA 生成带有一些文本的 QR 码。 please check this image.请检查这张图片。 This is how I want to generate my QR code.这就是我想要生成二维码的方式。 (with user name and event name text) (带有用户名和事件名称文本)

This is my code and this generate only (QR) code, (not any additional text).这是我的代码,它只生成 (QR) 代码,(没有任何附加文本)。 If anyone know how to generate QR code with text please help me.如果有人知道如何生成带有文本的 QR 码,请帮助我。

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
public class Create_QR {
    public static void main(String[] args) {
        try {
            String qrCodeData = "This is the text";
            String filePath = "C:\\Users\\Nirmalw\\Desktop\\Projects\\QR\\test\\test_img\\my_QR.png";
            String charset = "UTF-8"; // or "ISO-8859-1"

            Map < EncodeHintType, ErrorCorrectionLevel > hintMap = new HashMap < EncodeHintType, ErrorCorrectionLevel > ();

            hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);

            BitMatrix matrix = new MultiFormatWriter().encode(new String(qrCodeData.getBytes(charset), charset),
                    BarcodeFormat.QR_CODE, 500, 500, hintMap);

            MatrixToImageWriter.writeToFile (matrix, filePath.substring(filePath.lastIndexOf('.') + 1), new File(filePath));

            System.out.println("QR Code created successfully!");
        } catch (Exception e) {
            System.err.println(e);
        }
    }
}

To generate a QR code in Java, we need to use a third-party library named ZXing (Zebra Crossing).生成Java二维码需要用到第三方库ZXing(Zebra Crossing)。 It is a popular API that allows us to process with QR code.这是一个流行的 API,它允许我们使用二维码进行处理。 With the help of the library, we can easily generate and read the QR code.借助该库,我们可以轻松生成并读取二维码。 Before moving towards the Java program, we need to add the ZXing library to the project.在转向 Java 程序之前,我们需要将 ZXing 库添加到项目中。 We can download it from the official site.我们可以从官网下载。

  • zxing core-3.3.0.jar zxing core-3.3.0.jar
  • zxing javase-3.3.0.jar zxing javase-3.3.0.jar

After downloading, add it to the classpath.下载后,将其添加到类路径中。 Or add the following dependency in pom.xml file.或者在 pom.xml 文件中添加如下依赖。

 <dependencies> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.0</version> </dependency> </dependencies>

Let's create a Java program that generates a QR code.让我们创建一个生成二维码的 Java 程序。

GenerateQrCode.java生成二维码.java

 import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.NotFoundException; import com.google.zxing.WriterException; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; public class GenerateQRCode { //static function that creates QR Code public static void generateQRcode(String data, String path, String charset, Map map, int h, int w) throws WriterException, IOException { //the BitMatrix class represents the 2D matrix of bits //MultiFormatWriter is a factory class that finds the appropriate Writer subclass for the BarcodeFormat requested and encodes the barcode with the supplied contents. BitMatrix matrix = new MultiFormatWriter().encode(new String(data.getBytes(charset), charset), BarcodeFormat.QR_CODE, w, h); MatrixToImageWriter.writeToFile(matrix, path.substring(path.lastIndexOf('.') + 1), new File(path)); } //main() method public static void main(String args[]) throws WriterException, IOException, NotFoundException { //data that we want to store in the QR code String str= "THE HABIT OF PERSISTENCE IS THE HABIT OF VICTORY."; //path where we want to get QR Code String path = "C:\\Users\\Anubhav\\Desktop\\QRDemo\\Quote.png"; //Encoding charset to be used String charset = "UTF-8"; Map<EncodeHintType, ErrorCorrectionLevel> hashMap = new HashMap<EncodeHintType, ErrorCorrectionLevel>(); //generates QR code with Low level(L) error correction capability hashMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L); //invoking the user-defined method that creates the QR code generateQRcode(str, path, charset, hashMap, 200, 200);//increase or decrease height and width accodingly //prints if the QR code is generated System.out.println("QR Code created successfully."); } }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM