本章学习目录
一,将jar包放入IDEA的library()
-
jar包:名叫:core-3.4.0.jar
-
阿里云盘地址链接:core-3.4.0.jar
https://www.aliyundrive.com/s/NJK7jv6Xn6f
提取码: qc5d
1.在项目中新建文件夹libs
2.右击add lib,即可引用jar包内的api
二,需要用的类和方法
- 类:MultiFormatWriter
- 该类下的方法:encode();
三,方法需要的五个参数
-
encode()需要5个参数(我们用5个参数的)
-
String var1, BarcodeFormat var2, int var3, int var4, Map<EncodeHintType, ?> var5
-
String var1:表示想要扫码后显示的内容
-
BarcodeFormat var2:表示告知想要画的码的类型,如一维码还是二维码
-
int var3:表示二维码的宽度
-
int var4:表示二维码的高度
-
Map<EncodeHintType, ?> var5:存放键值,用于设置二维码的展示形式
-
-
传参得到内存
四,将二维码显示成图片
- BufferedImage的含参构造:
五,存入指定盘符下
- 设置文件用于存放
- 将图片存入,返回结果
- 判断一下即可
六,代码的展示
- 实现二维码的完整流程
package com.mystudy.amuse;
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;
/**
* 制作二维码
*/
public class QrCode {
public static void main(String[] args) throws WriterException, IOException {
//利用core-3.4.0.jar包里的一个工具类帮我们生成二维码
//利用MultiFormatWriter下的
//创建工具类的对象
MultiFormatWriter multiFormatWriter=new MultiFormatWriter();
//定义要展示的内容
String message="这是我要展示的文字";
//定义码的类型
BarcodeFormat type = BarcodeFormat.QR_CODE;
//定义宽度
int width=500;
//定义高度
int height=500;
//定义map集合,用于存放二维码的一些其他设置
Map map=new HashMap();
//EncodeHintType.ERROR_CORRECTION:二维码的纠错能力
//L:Low 7% M:Middle 15% Q:Quartereed 25% H:High 30%
map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
//设置编码,防止乱码
map.put(EncodeHintType.CHARACTER_SET,"UTF-8");
//设置留白
map.put(EncodeHintType.MARGIN,2);
//传入以上5个参数,生成内存
BitMatrix encode = multiFormatWriter.encode(message, type, width, height, map);
//内存===>图片对象
//设置width,height
// BufferedImage.TYPE_INT_BGR:表示具有8位RGB颜色分量的图像,
// 对应于Windows或Solaris样式的BGR颜色模型,蓝色,绿色和红色颜色打包成整数像素。
BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_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:/我的Java学习/二维码/我的二维码/第一张.png");
//将image以png后缀写入file中
boolean flag= ImageIO.write(image,"png",file);
//根据flag进行判断是否操作成功
if (flag){
System.out.println("二维码生成成功");
}else {
System.out.println("二维码生成失败");
}
}
}
七,结果的展示
- 进入路径下查看
- 结果展示