Maison  >  Article  >  Java  >  Utiliser Java pour réaliser la fonction de génération et de numérisation de codes QR des données de formulaire

Utiliser Java pour réaliser la fonction de génération et de numérisation de codes QR des données de formulaire

王林
王林original
2023-08-07 14:21:031739parcourir

Utilisez Java pour implémenter la fonction de génération et de numérisation de codes QR des données de formulaire

Avec le développement rapide de l'Internet mobile, les codes QR sont devenus un moyen très courant de transmettre des informations. Dans de nombreux scénarios, nous devons transmettre et scanner rapidement les données du formulaire remplies par les utilisateurs sous forme de codes QR. Cet article utilisera le langage Java pour implémenter les fonctions de génération et d'analyse de code QR des données de formulaire, et fournira des exemples de code.

1. Générer un code QR

Nous devons d'abord utiliser une bibliothèque tierce en Java, telle que ZXing, pour générer un code QR. ZXing est une bibliothèque open source de génération et d'analyse de codes QR, qui fournit une multitude de fonctions et d'API que nous pouvons utiliser. Nous pouvons l'utiliser en introduisant les dépendances liées à ZXing dans le projet.

Ce qui suit est un exemple de code simple qui montre comment utiliser la bibliothèque ZXing pour générer un code QR contenant les données du formulaire utilisateur.

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

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;

public class QRCodeGenerator {

    private static final int WIDTH = 300;
    private static final int HEIGHT = 300;

    public static void main(String[] args) {
        // 用户表单数据
        HashMap<String, String> formData = new HashMap<>();
        formData.put("name", "张三");
        formData.put("age", "25");

        // 生成二维码
        generateQRCode(formData);
    }

    public static void generateQRCode(HashMap<String, String> formData) {
        try {
            // 创建一个矩阵对象,用于表示生成的二维码图像
            BitMatrix bitMatrix = new MultiFormatWriter().encode(formData.toString(), BarcodeFormat.QR_CODE, WIDTH, HEIGHT, null);

            BufferedImage bufferedImage = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);

            // 迭代矩阵的每个像素点,设置颜色值
            for (int x = 0; x < WIDTH; x++) {
                for (int y = 0; y < HEIGHT; y++) {
                    bufferedImage.setRGB(x, y, bitMatrix.get(x, y) ? Color.BLACK.getRGB() : Color.WHITE.getRGB());
                }
            }

            // 将图像保存为文件
            File outputFile = new File("qrcode.png");
            ImageIO.write(bufferedImage, "png", outputFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Dans l'exemple de code ci-dessus, nous utilisons formData pour représenter les données du formulaire remplies par l'utilisateur, puis utilisons la méthode encode du MultiFormatWriter classe pour générer deux représentations matricielles de l’image du code QR. Après cela, nous parcourons chaque pixel de la matrice et définissons la valeur de couleur correspondante en fonction de sa valeur, et enfin enregistrons l'image sous forme de fichier. <code>formData来表示用户填写的表单数据,然后使用MultiFormatWriter类的encode方法来生成二维码图像的矩阵表示。之后,我们通过迭代矩阵的每个像素点,并根据其值设置对应的颜色值,最终将图像保存为文件。

二、扫描二维码

当生成了包含表单数据的二维码后,我们还需要实现一个扫描功能来读取二维码中的数据。下面是一个简单的示例代码,演示了如何使用ZXing库来实现一个简单的二维码扫描功能。

import com.google.zxing.BinaryBitmap;
import com.google.zxing.NotFoundException;
import com.google.zxing.RGBLuminanceSource;
import com.google.zxing.Reader;
import com.google.zxing.Result;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.QRCodeReader;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class QRCodeScanner {

    public static void main(String[] args) {
        // 扫描二维码
        scanQRCode("qrcode.png");
    }

    public static void scanQRCode(String imagePath) {
        try {
            // 读取二维码图像
            BufferedImage bufferedImage = ImageIO.read(new File(imagePath));
            RGBLuminanceSource source = new RGBLuminanceSource(bufferedImage.getWidth(), bufferedImage.getHeight(), getImagePixels(bufferedImage));
            BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(source));

            // 创建一个二维码阅读器
            Reader reader = new QRCodeReader();

            // 解码二维码图像
            Result result = reader.decode(binaryBitmap);

            // 输出解码结果
            System.out.println(result.getText());
        } catch (IOException | NotFoundException e) {
            e.printStackTrace();
        }
    }

    private static int[] getImagePixels(BufferedImage bufferedImage) {
        int width = bufferedImage.getWidth();
        int height = bufferedImage.getHeight();
        int[] pixels = new int[width * height];
        bufferedImage.getRGB(0, 0, width, height, pixels, 0, width);
        return pixels;
    }
}

上述示例代码中,我们通过ImageIO类的read方法读取二维码图像,并将其转换为BinaryBitmap对象。然后,我们创建一个QRCodeReader对象来解码二维码图像,并通过decode

2. Scannez le code QR

Après avoir généré le code QR contenant les données du formulaire, nous devons également implémenter une fonction de numérisation pour lire les données du code QR. Ce qui suit est un exemple de code simple qui montre comment utiliser la bibliothèque ZXing pour implémenter une fonction simple de numérisation de code QR.

rrreee

Dans l'exemple de code ci-dessus, nous lisons l'image du code QR via la méthode read de la classe ImageIO et la convertissons en un BinaryBitmap objet . Ensuite, nous créons un objet QRCodeReader pour décoder l'image du code QR et obtenons le résultat du décodage via la méthode decode. 🎜🎜Résumé : 🎜🎜Cet article utilise le langage Java pour implémenter la fonction de génération et d'analyse de code QR des données de formulaire, et fournit des exemples de code détaillés. Grâce à ces exemples de code, nous pouvons apprendre à utiliser la bibliothèque ZXing pour générer des codes QR contenant des données de formulaire, et nous pouvons utiliser la même bibliothèque pour implémenter la fonction de numérisation de code QR. Les fonctions de génération et de numérisation de codes QR sont très utiles dans de nombreux scénarios, tels que l'inscription à un événement, le paiement électronique, etc. J'espère que cet article pourra vous aider à mieux comprendre et utiliser Java pour réaliser la fonction de génération et d'analyse de code QR des données de formulaire. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn