Java 生成二维码,及base64转换

编程入门 行业动态 更新时间:2024-10-08 20:39:09

Java 生成<a href=https://www.elefans.com/category/jswz/34/1768147.html style=二维码,及base64转换"/>

Java 生成二维码,及base64转换

使用谷歌的一个二维码转换工具

1.引入依赖

<dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.0</version>
</dependency><dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.3.0</version>
</dependency>

2.方式一:转base64返回给前端字符串

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.util.Hashtable;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxingmon.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import lombok.extern.slf4j.Slf4j;
import sun.misc.BASE64Encoder;/*** 二维码生成器*/
@Slf4j
public class QrcodeUtils {/*** 保存二维码图片** @param text 二维码内容* @param width 宽度* @param height 高度* @param filePath 文件保存路径* @throws WriterException* @throws IOException*/public static void generateQRCodeImage(String text, int width, int height, String filePath)throws WriterException, IOException {QRCodeWriter qrCodeWriter = new QRCodeWriter();BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);Path path = FileSystems.getDefault().getPath(filePath);MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);}/*** 返回二维码字节数组* @param text* @param width* @param height* @return* @throws WriterException* @throws IOException*/public static byte[] getQRCodeImage(String text, int width, int height) throws WriterException, IOException {QRCodeWriter qrCodeWriter = new QRCodeWriter();Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();hints.put(EncodeHintType.CHARACTER_SET, "utf-8");hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);hints.put(EncodeHintType.MARGIN, 1);//去除多余白边BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height,hints);ByteArrayOutputStream pngOutputStream = new ByteArrayOutputStream();MatrixToImageWriter.writeToStream(bitMatrix, "PNG", pngOutputStream);byte[] pngData = pngOutputStream.toByteArray();return pngData;}/*** 将二维码数组进行Base64编码返回* 然后把编码后图片在前端页面直接取值即可* <img id="cashier_page_p_w_picpath" src='data:img/jpg;base64,${base64Img }'/>* @return*/public static void main(String[] args) {try {byte[]a = getQRCodeImage("", 350, 350);BASE64Encoder encoder = new BASE64Encoder();String png_base64 = encoder.encodeBuffer(a).trim();//转换成base64串png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\nlog.info("二维码转base64值为:"+"data:image/jpg;base64," + png_base64);} catch (WriterException | IOException e) {e.printStackTrace();}}
}


然后把编码后的base64字符串,在前端页面直接取值即可

<img src='data:img/jpg;base64,${base64Img}'/>

浏览器访问获得二维码,微信扫描即可跳转到相应网址

 

3.方式二:直接页面访问获得二维码图片

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxingmon.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;/*** 二维码生成器*/
@Slf4j
public class QrcodeUtils {// 使用方式@GetMapping("/getCodeImg")public void getCodeImg(HttpServletResponse response) {String url = "";try {// 生成二维码配置Map<EncodeHintType, Object> hint = new HashMap<>();// 设置纠错等级hint.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);// 设置字符集hint.put(EncodeHintType.CHARACTER_SET, "utf-8");// 设置二维码图像BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, 300, 300, hint);// 使用输出流写给客户端ServletOutputStream outputStream = response.getOutputStream();MatrixToImageWriter.writeToStream(bitMatrix, "png", outputStream);} catch (Exception e) {e.printStackTrace();}}
}

更多推荐

Java 生成二维码,及base64转换

本文发布于:2024-02-06 12:06:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1748860.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:二维码   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!