java生成二维码工具
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生成二维码工具相关推荐
- 分享一个Java生成二维码工具类
分享一个Java生成二维码工具类 直接上代码: 1.CodeUtil.class package top.lrshuai.blog.util;import java.awt.BasicStroke; ...
- java生成二维码工具类
1,先引入谷歌的插件zxing的maven坐标 <!-- 二维码 --><dependency><groupId>com.google.zxing</grou ...
- Java生成二维码底部带文字并且返回前端使用img接收
目录 1.java生成二维码工具类 2.web测试 3.前端处理 4.测试结果 背景 本demo主要针对jdk1.6版本的,但是高版本的同样可以用,如果觉得不舒服可以自行添加高版本的依赖包. 准备工具 ...
- java将链接生成二维码工具类
一.添加依赖 <!-- 生成二维码--><dependency><groupId>com.google.zxing</groupId><artif ...
- java 生成二维码 QRCode、zxing 两种方式
版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢. https://blog.csdn.net/testcs_dn/article/details/ ...
- 几行代码,轻松带你实现Java生成二维码功能!
作者:瑞 新 https://0x9.me/rVjw2 文章目录 效果图 步骤 maven依赖 工具类 service 扩展 局域网调试 线上调试 效果图 步骤 maven依赖 <!--生成二维 ...
- 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...
二维码相关---java生成二维码名片,并且自动保存到手机通讯录中... 技术qq交流群:JavaDream:251572072 1.首先介绍一个api. Zxing是Google提供的关于条码 ...
- Java生成二维码带LOGO底部标题竖版字体
前言 Java后端生成二维码 底部 侧面带有标题,可调节字号 参考文章 使用Java生成二维码图片(亲测) Reborn_YY使用Java生成二维码图片 图标素材库 Java后台生成图片,前台实现图片 ...
- java生成二维码扫描跳转到指定的路径URL
java生成二维码扫描跳转到指定的路径URL 导入依赖 <dependency><groupId>com.google.zxing</groupId><art ...
- java生成二维码 并调用二维码打印机
自己折腾了好久,百度.google了半天,发现java生成二维码的文章倒是很多,但是调用二维码打印的就很少了,好多打印出来要么是二维码占用好几张纸,要么就是多出4.5张白纸,浪费了我不少的条码纸,最终 ...
最新文章
- 堆(heap)和栈(stack)有什么区别
- 保护DNS对数字网络安全越来越重要—Vecloud
- Deeplearning入门篇(2)
- springboot设置默认值_spring boot jpa存储数据的默认值为java的默认值
- 解决“Linux无法登录,显示module is unknown”问题
- CryptoPunk 3443竞拍价达3000ETH
- 京东下拉词框推广是什么?
- 必须掌握的Java基础知识(一)
- Oracle 9i的标量数据类型
- select命名_Maya中Pymel写个带界面的重命名工具(一)
- php+mysql模板个人记账系统
- 2020计算机二级vb考试题库,2020年计算机二级VB题库计算机二级考试题库.docx
- python面板数据模型操作步骤_面板模型回归操作指南,适合初学者!
- C++中自带的二分查找函数
- 2021年,小灰都读了哪些书?
- 基于BLM业务领先模型演化的项目管理四张地图
- Linux时间设置和motd设置
- Arranging Wine
- 基于android的有声听书系统
- 【解决】Error loading the file ‘Assets/.../Scene.unity‘. File is either empty or corrupted, please......