欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1024程序员节

程序员文章站 2022-04-28 18:32:04
...

1024程序员节

告白:利用二维码

**1G = 1024M = 一级棒 coding **

一维码:横向扫的

学习简单的二维码

package com.company;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
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;
import java.util.Map;

/**
 * @auther : A close under the
 * 测试类:
 * 1.Zxing.jar 第三方jar包 我们所需的画二维码的东西都在整个jar包中,我们可以直接用。
 *  可以画二维码,一维码(条形码)
 */
public class test {
    //这是main方法,程序入口
    public static void main(String[] args) throws WriterException, IOException {
        //1.利用Zxing.jar里面提供的一个工具类来帮我生成码:
        //2.创建工具类的对象:--->>m
        MultiFormatWriter m = new MultiFormatWriter();
        //3.利用m对象来创建二维码:---》动作----》方法;
        /*
        想要使用encode()需要传入5个参数;
        String var1,BarcodeFormat var2, int var3, int var4,Map<EncodeHintType,?> var5
        String var1: 表白的内容
        BarcodeFormat var2: 告知你想画一维码还是二维码
        int var3 : 接收二维码的宽
        int var4 : 接收二维码的高
        Map<EncodeHintType,?> var5; 存放键值对
        二维码的其他信息:
         */
        //表白的内容
        String str ="程序员小哥哥,我就喜欢你秃,我就喜欢你不洗澡~10.24";
        //告知你想画一维码还是二维码;
        BarcodeFormat b = BarcodeFormat.QR_CODE;//二维码
        //定义二维码的宽,高;
        int width = 500;
        int height = 500;
        /*
        二维码的其他信息;
        纠错能力:
        L low          7%
        M middle       15%
        Q quartered    25%
        H high         35%
        (2)设置编码\
        (3)设置留白:
         */
        Map map = new HashMap();
        map.put(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLevel.L);
        map.put(EncodeHintType.CHARACTER_SET,"UTF-8");
        map.put(EncodeHintType.MARGIN,2);
        //调用方法,传入5个参数;
        BitMatrix encode = m.encode(str,b,width,height,map);//encode代表的是二维码的对象---》内存

        //encode代表的是二维码的对象--》内存---》转成图片对象
        BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);//BGR:红绿蓝
        //就是将二维码对象有效数据展示出来;
        for (int x = 0; x < width; x++) {
            for (int y = 0; y < height; y++) {
                image.setRGB(x,y,encode.get(x,y)? Color.WHITE.getRGB():Color.BLACK.getRGB());
                
            }
            
        }
        //图片对象--->在内存;----》写入硬盘;
        File file = new File("d:/1024程序员节表白.png");
        //将image对象以png后缀写入file
        boolean flag = ImageIO.write(image,"png",file);
        //根据flag进行后续的判断:
        if(flag){
            System.out.println("二维码生成成功!");
        }else{
            System.out.println("二维码生成失败!");
        }

    }
}

相关标签: java