1,添加maven依赖

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

2,微信支付宝图片

3,工具类代码

import cn.hutool.core.codec.Base64;
import com.google.common.collect.Maps;
import com.google.zxing.*;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageConfig;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.Map;/*** @author guiJia* @date 2021/7/14 10:08*/
@Slf4j
@Component
public class ZxingUtils {private static final int WIDTH = 300;private static final int HEIGHT = 300;/*** 生成二维码* @param content 要写入二维码的内容* @param fileName 文件名*/public String createQrCode(String content, String fileName){// 定义二维码参数Map<EncodeHintType, Object> hints = Maps.newHashMap();hints.put(EncodeHintType.CHARACTER_SET, "utf-8");hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q);//设置边距默认是5hints.put(EncodeHintType.MARGIN, 2);// 定义缓冲区图片BufferedImage bufferedImage = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);Graphics2D g = (Graphics2D) bufferedImage.getGraphics();try {// zxing的官方类BitMatrix bitMatrix=new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);BufferedImage image = new BufferedImage(bitMatrix.getWidth(), bitMatrix.getHeight(), BufferedImage.TYPE_INT_RGB);for (int x = 0; x < bitMatrix.getWidth(); x++) {for (int y = 0; y < bitMatrix.getHeight(); y++) {image.setRGB(x, y, bitMatrix.get(x, y) ? MatrixToImageConfig.BLACK : MatrixToImageConfig.WHITE);}}// 生成二维码g.drawImage(image, 0, 0, null);// 判断是否需要添加logo图片if(StringUtils.isNotBlank(fileName)) {InputStream inputStream = this.getClass().getResourceAsStream("/template/" + fileName);BufferedImage logo = ImageIO.read(inputStream);int width4 = WIDTH / 4;int width8 = width4 / 2;int height4 = HEIGHT / 4;int height8 = height4 / 2;g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f));g.drawImage(logo, width4 + width8, height4 + height8, width4, height4, null);}g.dispose();// 结束内存图片bufferedImage.flush();
//            response.setHeader("Cache-Control", "no-store, no-cache");
//            response.setContentType("image/jpeg");
//            ServletOutputStream os = response.getOutputStream();
//            ImageIO.write(bufferedImage, "PNG",os);
//            os.flush();
//            os.close();ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();ImageIO.write(bufferedImage, "png", byteArrayOutputStream);return Base64.encode(byteArrayOutputStream.toByteArray());} catch (Exception e) {e.printStackTrace();log.info("生成二维码失败");}return StringUtils.EMPTY;}/*** 解析二维码(输入图片字节流)* @param input 二维码图片的字节流* @return 二维码内容*/public static Result readQrCode(InputStream input){// zxing的官方类MultiFormatReader reader = new MultiFormatReader();try {BufferedImage image = ImageIO.read(input);BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));Map<DecodeHintType, Object> hints = Maps.newHashMap();hints.put(DecodeHintType.CHARACTER_SET, "utf-8");return reader.decode(binaryBitmap, hints);} catch (Exception e) {e.printStackTrace();log.info("解析二维码失败");return null;}}
}

4,编写测试文件

 @Testpublic void test3(){String content = "https://qr.alipay.com/bax01642biajcdxjsmfo553e";zxingUtils.createQrCode(content, "支付宝支付.png");}

java生成二维码工具相关推荐

  1. 分享一个Java生成二维码工具类

    分享一个Java生成二维码工具类 直接上代码: 1.CodeUtil.class package top.lrshuai.blog.util;import java.awt.BasicStroke; ...

  2. java生成二维码工具类

    1,先引入谷歌的插件zxing的maven坐标 <!-- 二维码 --><dependency><groupId>com.google.zxing</grou ...

  3. Java生成二维码底部带文字并且返回前端使用img接收

    目录 1.java生成二维码工具类 2.web测试 3.前端处理 4.测试结果 背景 本demo主要针对jdk1.6版本的,但是高版本的同样可以用,如果觉得不舒服可以自行添加高版本的依赖包. 准备工具 ...

  4. java将链接生成二维码工具类

    一.添加依赖 <!-- 生成二维码--><dependency><groupId>com.google.zxing</groupId><artif ...

  5. java 生成二维码 QRCode、zxing 两种方式

    版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢. https://blog.csdn.net/testcs_dn/article/details/ ...

  6. 几行代码,轻松带你实现Java生成二维码功能!

    作者:瑞 新 https://0x9.me/rVjw2 文章目录 效果图 步骤 maven依赖 工具类 service 扩展 局域网调试 线上调试 效果图 步骤 maven依赖 <!--生成二维 ...

  7. 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...

    二维码相关---java生成二维码名片,并且自动保存到手机通讯录中... 技术qq交流群:JavaDream:251572072 1.首先介绍一个api.   Zxing是Google提供的关于条码 ...

  8. Java生成二维码带LOGO底部标题竖版字体

    前言 Java后端生成二维码 底部 侧面带有标题,可调节字号 参考文章 使用Java生成二维码图片(亲测) Reborn_YY使用Java生成二维码图片 图标素材库 Java后台生成图片,前台实现图片 ...

  9. java生成二维码扫描跳转到指定的路径URL

    java生成二维码扫描跳转到指定的路径URL 导入依赖 <dependency><groupId>com.google.zxing</groupId><art ...

  10. java生成二维码 并调用二维码打印机

    自己折腾了好久,百度.google了半天,发现java生成二维码的文章倒是很多,但是调用二维码打印的就很少了,好多打印出来要么是二维码占用好几张纸,要么就是多出4.5张白纸,浪费了我不少的条码纸,最终 ...

最新文章

  1. 堆(heap)和栈(stack)有什么区别
  2. 保护DNS对数字网络安全越来越重要—Vecloud
  3. Deeplearning入门篇(2)
  4. springboot设置默认值_spring boot jpa存储数据的默认值为java的默认值
  5. 解决“Linux无法登录,显示module is unknown”问题
  6. CryptoPunk 3443竞拍价达3000ETH
  7. 京东下拉词框推广是什么?
  8. 必须掌握的Java基础知识(一)
  9. Oracle 9i的标量数据类型
  10. select命名_Maya中Pymel写个带界面的重命名工具(一)
  11. php+mysql模板个人记账系统
  12. 2020计算机二级vb考试题库,2020年计算机二级VB题库计算机二级考试题库.docx
  13. python面板数据模型操作步骤_面板模型回归操作指南,适合初学者!
  14. C++中自带的二分查找函数
  15. 2021年,小灰都读了哪些书?
  16. 基于BLM业务领先模型演化的项目管理四张地图
  17. Linux时间设置和motd设置
  18. Arranging Wine
  19. 基于android的有声听书系统
  20. 【解决】Error loading the file ‘Assets/.../Scene.unity‘. File is either empty or corrupted, please......

热门文章

  1. “国潮” MCU厂商列表
  2. 企业手机装配线平衡改善研究
  3. Excel VBA VBA去重复的几种方法
  4. 区块链之门 | Reach on Conflux 2021 黑客松开赛
  5. 线性代数之 矩阵乘法的本质
  6. 七本前端(javascript、css)最著名工具书免费下载
  7. 从游击队到正规军:马蜂窝旅游网的IM系统架构演进之路
  8. 三星S4 GT-I9500 Google服务包及刷机教程
  9. 计算机屏保的功能,电脑的屏保自动出来格言
  10. python 入门教程