跳到主要内容

generate-qr-code


生成二维码

<!-- 二维码生成依赖 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.4.1</version>
</dependency>



// 1. sysUserId
Base64.Encoder encoder = Base64.getEncoder();
String randomCode = encoder.encodeToString(sysUserId.toString().getBytes());

// 2. 生成二维码图片
QRCodeWriter qrCodeWriter = new QRCodeWriter();
BitMatrix bitMatrix = qrCodeWriter.encode(randomCode, BarcodeFormat.QR_CODE, width, height);

// 3. 转换为字节数组
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream);
byte[] qrCodeBytes = outputStream.toByteArray();
// 4. 保存文件到服务器
// OssFile ossFile = minioTemplate.fileUpload(qrCodeBytes, bucketName, "qrcode.png", FileContentType.PNG);
// SysFile sysFile = new SysFile(ossFile);
// sysFile.setSysUserId(userId);
// sysFile.setFileType(FileType.QR_CODE.getFileType());
// return sysFileRepository.save(sysFile);

Base64Encoder encoder2 = new Base64Encoder();
return encoder2.encode(qrCodeBytes);














/**
* 文件上传
*
* @param bytes 字节流
* @param originName 原始文件名
* @param contentType con 类型
* @return 文件对象
*/
public OssFile fileUpload(byte[] bytes, String bucketName, String originName, String contentType) {
try {
InputStream inputStream = new ByteArrayInputStream(bytes);

// objectName不存在时生成新的
String objectName = this.generatePathAndFileNameWithoutSuffix();

// 构造参数
ObjectWriteResponse response = this.minioClient.putObject(PutObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.stream(inputStream, bytes.length, -1)
.contentType(contentType)
.build());

OssFile fileInfo = new OssFile();
fileInfo.setBucket(response.bucket());
fileInfo.setObject(response.object());
fileInfo.setFilename(originName);
return fileInfo;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}