Java generates QR code based on content

Java generates QR code based on content

1. First import the jar package: google.zxing.jar
The jar package can be downloaded from the maven website: meven warehouse
Here you can find most of the jar packages you want, which can be in the form of dependencies or jar packages
insert image description here

insert image description here
insert image description here
Ok, the jar package is done, directly upload the code:

package test;

import java.awt.image.BufferedImage;

import java.io.File;
import java.io.IOException;
import java.io.OutputStream;

import javax.imageio.ImageIO;

import java.util.Hashtable;

import com.google.zxing.common.BitMatrix;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;

/**
 * 二维码的生成需要借助MatrixToImageWriter类,该类是由Google提供的,可以将该类直接拷贝到源码中使用
 */
public class test {
    
    
    private static final int BLACK = 0xFF000000;
    private static final int WHITE = 0xFFFFFFFF;

    private test() {
    
    
    }

    public static BufferedImage toBufferedImage(BitMatrix matrix) {
    
    
        int width = matrix.getWidth();
        int height = matrix.getHeight();
        BufferedImage image = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_RGB);
        for (int x = 0; x < width; x++) {
    
    
            for (int y = 0; y < height; y++) {
    
    
                image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);
            }
        }
        return image;
    }

    public static void writeToFile(BitMatrix matrix, String format, File file)
            throws IOException {
    
    
        BufferedImage image = toBufferedImage(matrix);
        if (!ImageIO.write(image, format, file)) {
    
    
            throw new IOException("Could not write an image of format "
                    + format + " to " + file);
        }
    }

    public static void writeToStream(BitMatrix matrix, String format,
            OutputStream stream) throws IOException {
    
    
        BufferedImage image = toBufferedImage(matrix);
        if (!ImageIO.write(image, format, stream)) {
    
    
            throw new IOException("Could not write an image of format " + format);
        }
    }

    public static void main(String[] args) throws Exception {
    
    
        String text = "我是内容啊,我如果是个链接,一扫就跳转了"; // 二维码内容
        int width = 300; // 二维码图片宽度
        int height = 300; // 二维码图片高度
        String format = "jpg";// 二维码的图片格式

        Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 内容所使用字符集编码

        BitMatrix bitMatrix = new MultiFormatWriter().encode(text,
                BarcodeFormat.QR_CODE, width, height, hints);
        // 生成二维码
        File outputFile = new File("d:" + File.separator + "new.jpg");
        test.writeToFile(bitMatrix, format, outputFile);
    }
}

If the content of this QR code is a link, you will jump directly to that website after scanning it, such as "https://mvnrepository.com" and the
final rendering:
insert image description here

Guess you like

Origin blog.csdn.net/weixin_43005654/article/details/124490064