package com.sjjtcloud;
import com.github.binarywang.utils.qrcode.MatrixToImageWriter;
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 java.io.*;
import java.util.HashMap;
import java.util.Map;
/**
* 生成二维码:导入以下依赖
* <dependency>
* <groupId>com.google.zxing</groupId>
* <artifactId>core</artifactId>
* <version>3.3.2</version>
* </dependency>
*/
public class Demo {
// 默认二维码宽度
public static final int WIDTH = 300;
// 默认二维码高度
public static final int HEIGHT = 300;
// 默认二维码文件格式
public static final String FORMAT = "png";
// 二维码参数
public static final Map<EncodeHintType, Object> HINTS = new HashMap<EncodeHintType, Object>();
//初始化编码格式等参数
static {
// 字符编码
HINTS.put(EncodeHintType.CHARACTER_SET, "utf-8");
HINTS.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
// 二维码与图片边距
HINTS.put(EncodeHintType.MARGIN, 2);
}
/**
* @param content 二维码内容即要存储在二维码中的内容(扫描二维码之后获取的内容)
* @param stream 输出流
* @param width 二维码宽
* @param height 二维码高
* @throws WriterException
* @throws IOException
* @description:功能描述 将二维码写出到输出流中
* @see: 需要参见的其它内容
*/
public static void writeToStream(String content, OutputStream stream, Integer width, Integer height) throws Exception {
if (width == null) {
width = WIDTH;
}
if (height == null) {
height = HEIGHT;
}
BitMatrix bitMatrix = new MultiFormatWriter().encode(content,
BarcodeFormat.QR_CODE, width, height, HINTS);
MatrixToImageWriter.writeToStream(bitMatrix, FORMAT, stream);
}
public static void main(String[] arg) throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
// 生成二维码图片
Demo.writeToStream("二维码信息", out, 300, 300);
InputStream in = new ByteArrayInputStream(out.toByteArray());
//将生成的二维码写入图片,也可直接使用流
String filePath = "C:\\Users\\A\\Desktop\\aaa.jpg";
FileOutputStream fos = new FileOutputStream(filePath);
int length;
byte[] b = new byte[1024];
while ((length = in.read(b)) > 0) {
fos.write(b, 0, length);
}
fos.flush();
in.close();
fos.close();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/111121.html