话不多说 直接上代码

先在pom文件引入zxing包

   <!--二维码--><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.2.1</version></dependency><dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.2.1</version></dependency>

接下来是工具类

private static final Log log = LogFactory.getLog(QrCodeUtil2.class);private static String voucherPath = "http://aaa.aaaaaaa.aa:8080/#/voucherDetail?id=";// 设置默认参数,可以根据需要进行修改
private static final int QRCOLOR = 0xFF000000; // 默认是黑色
private static final int BGWHITE = 0xFFFFFFFF; // 背景颜色
private static final int WIDTH = 123; // 二维码宽
private static final int STARTWIDTH = 135; // 二维码宽
private static final int HEIGHT = 123; // 二维码高private static Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>() {private static final long serialVersionUID = 1L;{put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);// 设置QR二维码的纠错级别(H为最高级别)具体级别信息put(EncodeHintType.CHARACTER_SET, "utf-8");// 设置编码方式put(EncodeHintType.MARGIN, 0);}
};public static BufferedImage createQrText(TahVoucher voucher, Font font1, Font font2) throws WriterException{MultiFormatWriter multiFormatWriter = new MultiFormatWriter();BitMatrix bm = multiFormatWriter.encode(voucherPath+voucher.getId(), BarcodeFormat.QR_CODE, 130, 130, hints);BitMatrix bmw = deleteWhite(bm);// 创建一个图片缓冲区存放二维码图片BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);// 开始利用二维码数据创建Bitmap图片,分别设为黑(0xFFFFFFFF)白(0xFF000000)两色for (int x = 0; x < bmw.getWidth(); x++) {for (int y = 0; y< bmw.getHeight(); y++) {image.setRGB(x, y, bmw.get(x, y) ? QRCOLOR : BGWHITE);}}if (voucher!=null) {// 1、在内存创建图片缓冲区 这里设置画板的宽高和类型BufferedImage outImage = new BufferedImage(380, HEIGHT, BufferedImage.TYPE_4BYTE_ABGR);// 2、创建画布,获取图像对象Graphics2D outg = outImage.createGraphics();// 3、抗锯齿,防止模糊RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);rh.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);rh.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);outg.setRenderingHints(rh);// 4、在画布上画上二维码 X轴Y轴,宽度高度(X轴贴最左侧)outg.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);// 设置文字颜色为黑色outg.setColor(Color.BLACK);// 字体、字型、字号outg.setFont(font1);// drawString(文字信息、x轴、y轴)方法根据参数设置文字的坐标轴 ,根据需要来进行调整outg.drawString(voucher.getCompanyName(), STARTWIDTH, 20);// 字体、字型、字号outg.setFont(font2);outg.drawString("日期: " + voucher.getYear() + "-" + (!StringUtils.isEmpty(voucher.getRemark()) ? "("+ voucher.getRemark() +")":voucher.getMonth()), STARTWIDTH, 50);outg.drawString("册数: " + voucher.getSortNumber() + "/" + voucher.getTotalNumber(), STARTWIDTH, 80);outg.drawString("起始号: " + voucher.getVoucherNumber(), STARTWIDTH, 110);outg.dispose();outImage.flush();image = outImage;}image.flush();return image;
}public static BitMatrix deleteWhite(BitMatrix matrix){int[] rec = matrix.getEnclosingRectangle();int resWidth = rec[2] + 1;int resHeight = rec[3] + 1;BitMatrix resMatrix = new BitMatrix(resWidth, resHeight);resMatrix.clear();for (int i = 0; i < resWidth; i++) {for (int j = 0; j < resHeight; j++) {if (matrix.get(i + rec[0], j + rec[1]))resMatrix.set(i, j);}}return resMatrix;
}public static void drawLogoQRCode(TahVoucher voucher) {FileOutputStream fileOutputStream = null;try {voucher = new TahVoucher();voucher.setCompanyName("测试上海分公司");voucher.setVoucherNumber("1-23  1-34");voucher.setTotalNumber("22");voucher.setSortNumber("14");voucher.setMonth("12");voucher.setYear("2021");voucher.setId(1);// 保存路径输出流,将图片输出到指定路径fileOutputStream = new FileOutputStream("C:\\Users\\Admin\\Desktop\\二维码图片\\" + voucher.getCompanyName()+voucher.getYear()+"-"+voucher.getMonth()+"_"+voucher.getSortNumber() + ".png");Font font1 = new Font("黑体", Font.PLAIN, voucher.getCompanyName().length()>=19 ? 13:14);Font font2 = new Font("黑体", Font.PLAIN, 14);BufferedImage image = createQrText(voucher, font1, font2);ImageIO.write(image, "png", fileOutputStream);} catch (WriterException | IOException e) {log.error("二维码写入IO流异常", e);} finally {try {if (null != fileOutputStream){fileOutputStream.flush();fileOutputStream.close();}} catch (IOException ioe){log.error("二维码关流异常", ioe);}}
}public static void main(String[] args){drawLogoQRCode(new TahVoucher());
}

可酌情根据自己需要更改二维码长度和宽度

二维码生成(带文字)相关推荐

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

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

  2. iOS二维码生成(带logo)

    实在不好意思,昨天忘记写的<<二维码生成>>忘记写最常见的黑白二维码嵌入一张图片,一般都是公司的logo.今天补上 // // ViewController.m // 内置图片 ...

  3. android Zxing二维码生成带Logo

    生成二维码效果: 1:导入zxing依赖 implementation 'com.google.zxing:core:3.3.0' 2: 导入一个工具类,直接复制就可以注意包名 package com ...

  4. Marco's Java【小工具篇 之 Google Zxing 二维码生成】

    前言 二维码相信大家一定不陌生啦,去菜市场买菜,路边摊买个小吃都可以扫一扫,近几年来中国的二维码技术的普及也是大家有目共睹的,而二维码在其他国家虽然有用到,但极少,更没有说全国普及. 二维码又称二维条 ...

  5. java 生成二维码可带LOGO和文字描述

    maven依赖 <properties><zxing.version>3.3.0</zxing.version><commons-lang-version&g ...

  6. PHP批量生成底部带编号二维码(二维码生成+文字生成图片+图片拼接合并)

    PHP批量生成带底部编号二维码(二维码生成+文字生成图片+图片拼接合并) 需求: 输入编号如 : cb05-0000001  至 cb05-0000500 批量生成 以编号为名称的下图二维码,然后压缩 ...

  7. qrcode 生成二维码,带logo 带文字描述

    qrcode 生成二维码 1.引入 pom.xml 2. ResourceRenderer 3. QRCodeUtil 4. QRCodeController 5. HTML 6. 测试 1.引入 p ...

  8. Java 生成二维码(带logo 文字)

    1. 引入包 <!-- 二维码生成--><dependency><groupId>com.google.zxing</groupId><artif ...

  9. java 简单快速的生成二维码(带图片)

    **使用java+zxing 简单快速的生成二维码.** 效果图: 首先需要引入两个jar文件: <dependency><groupId>commons-codec</ ...

  10. ZXing生成条形码、二维码、带logo二维码

    采用的是开源的ZXing,Maven配置如下,jar包下载地址,自己选择版本下载,顺便推荐下Maven Repository <!-- https://mvnrepository.com/art ...

最新文章

  1. CentOS 6/7 忘记root密码,重新设置的方法
  2. 解决Ubuntu中sublime无法输入中文的问题
  3. PYG教程【五】链路预测
  4. POI的入门:加载解析Excel
  5. Jenkins连接TFS出现错误:“jenkins com.microsoft.tfs.core.exceptions.TECoreException”的问题收集...
  6. java opencv bytearray转mat_如何用Python+OpenCV处理图像色彩?终于有人讲明白了
  7. Leetcode每日一题:197.rising-temperature(上升的温度)
  8. Traversing Mapping Filtering Folding Reducing
  9. Openbiz 推进PHP进入大App Store时代
  10. 每天10个Linux命令三
  11. 蓝桥杯 剪邮票(dfs枚举 + bfs)
  12. Python与模块--01sys
  13. Vue实现仿豆瓣电影
  14. 计算机桌面图标右上角出现双箭头符号,电脑桌面图标有箭头怎么办 电脑桌面图片箭头去掉方法【图文】...
  15. 转载:MHL原理剖析
  16. python运行环境搭建以及常见问题解决
  17. 「JAVA」通过抢气球案例,来梳理线程基础知识
  18. 一台双u的服务器和一台单u的服务器性能能高一半吗,单机柜供电能力提升后,选择1U还是2U?...
  19. h5 视频活体检测(人脸认证)的前端
  20. TIA博途中无法添加HSP硬件支持包的解决办法

热门文章

  1. 保利威视根据vid查询视频信息
  2. 剑道独尊 无上剑意(下)
  3. 7z解压crc错误_.7z解压文件末端错误 如何解压分卷压缩包 - 电脑故障 - 服务器之家...
  4. 新华三:照耀城市的数字演进之路
  5. 如何将PC上的Word文档分享到朋友圈
  6. ECMAScript 6基础总结
  7. 政府部门服务器拒收邮件 怎么办,hotmail 邮箱最近反映拒收邮件,请问怎么解决?...
  8. HDU 5442 后缀自动机(从环字符串选定一个位置 , 时针或顺时针走一遍,希望得到字典序最大)...
  9. excel的sumif()函数和sumifs()函数
  10. Adversarial Generation of Continuous Images 阅读笔记