二维码生成

需求:后端生成PDF同时带二维码贴上PDF界面上
废话不多说先上代码
首先:添加maven坐标

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

其次:咱们就可以写一个工具类

import com.google.zxing.*;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import lombok.extern.slf4j.Slf4j;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
import javax.net.ssl.HttpsURLConnection;
import java.awt.*;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URL;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;/*** 生成二维码工具类*/
@Slf4j
public class ScancodeUtils {private static final String CHARSET = "utf-8";private static final String FORMAT_NAME = "JPG";// 二维码尺寸private static final int QRCODE_SIZE = 300;// LOGO宽度private static final int WIDTH = 60;// LOGO高度private static final int HEIGHT = 60;/*** 默认的二维码(不带图片)* @param content* @return*/public static BitMatrix createScancode(String content){//二维码宽高// int width=200;//int height=200;Map<EncodeHintType,Object> hints=new HashMap<EncodeHintType, Object>();//字符集编码hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");//容错级别为Hhints.put(EncodeHintType.ERROR_CORRECTION , ErrorCorrectionLevel.H);//白边的宽度,可取0~4hints.put(EncodeHintType.MARGIN , 0);BitMatrix bitMatrix=null;try {//生成矩阵bitMatrix=new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE,QRCODE_SIZE,QRCODE_SIZE,hints);}catch (WriterException e){e.printStackTrace();}return bitMatrix;}/*** 生成二维码流(带图片的)* @param content   源内容* @param imgPath    生成二维码保存的路径* @param needCompress    是否要压缩* @return     返回二维码图片* @throws Exception*/private static BufferedImage createImage(String content, String imgPath, boolean needCompress) throws Exception {Hashtable hints = new Hashtable();hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);hints.put(EncodeHintType.CHARACTER_SET, CHARSET);hints.put(EncodeHintType.MARGIN, 1);BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE,hints);int width = bitMatrix.getWidth();int height = bitMatrix.getHeight();BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);for (int x = 0; x < width; x++) {for (int y = 0; y < height; y++) {image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);}}if (imgPath == null || "".equals(imgPath)) {return image;}// 插入图片ScancodeUtils.insertImage(image, imgPath, needCompress);return image;}private static void insertImage(BufferedImage source, String imgPath, boolean needCompress) throws Exception {log.info("imgPath:{}",imgPath);URL url = new URL(imgPath);Image src = ImageIO.read(url);int width = src.getWidth(null);int height = src.getHeight(null);// 压缩LOGOif (needCompress) {if (width > WIDTH) {width = WIDTH;}if (height > HEIGHT) {height = HEIGHT;}Image image = src.getScaledInstance(width, height, Image.SCALE_SMOOTH);BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);Graphics g = tag.getGraphics();// 绘制缩小后的图g.drawImage(image, 0, 0, null);g.dispose();src = image;}// 插入LOGOGraphics2D graph = source.createGraphics();int x = (QRCODE_SIZE - width) / 2;int y = (QRCODE_SIZE - height) / 2;graph.drawImage(src, x, y, width, height, null);Shape shape = new RoundRectangle2D.Float(x, y, width, width, 6, 6);graph.setStroke(new BasicStroke(3f));graph.draw(shape);graph.dispose();}public static BufferedImage encode(String content, String imgPath, OutputStream output, boolean needCompress)throws Exception {BufferedImage image = ScancodeUtils.createImage(content, imgPath, needCompress);ByteArrayOutputStream bs = new ByteArrayOutputStream();ImageOutputStream imOut = ImageIO.createImageOutputStream(bs);// 输出到文件流ImageIO.write(image, "jpg ", imOut);return image;}/*** 判断图片地址是否为有效图片* @param posturl* @return* @throws IOException*/public static Integer state(String posturl) throws IOException{log.info("posturl:{}",posturl);URL urlStr = new URL(null, posturl, new sun.net.www.protocol.https.Handler());log.info("urlStr:{}",urlStr);HttpsURLConnection connection = (HttpsURLConnection) urlStr.openConnection();int state = connection.getResponseCode();if (state == 200) {System.out.println("====1====");return state;} else {System.out.println("====2====");return state;}}}

简单的二维码就这么生成了
这里注意 参数:
String content :就是你要输入的内容 当然 咱们也可以改成Objcet 对象
String imgPath :图片路径
boolean needCompress : 是否压缩!
没有参数的朋友 可以只填写内容,其他填入null 就可以咯!
喜欢的朋友可以参考学习,很开心今天又学到一个点,欢迎大家学习交流!!

关于二维码生成工具类简介相关推荐

  1. 二维码 生成工具类(文件转Base64字符串,Base64字符串转文件)

    希望我的知识榨干了能帮到你解除困难,要是没有帮助你的,问度娘和知爹 一.POM.xml依赖下载 二.工具类提供 一.POM.xml依赖下载 <!-- 生成二维码依赖 --><depe ...

  2. Java:二维码生成工具类

    java 二维码生成工具类 需要引入的maven <!--Java 生成二维码 --> <dependency><groupId>com.google.zxing& ...

  3. 微信小程序二维码生成工具,后端二维码生成工具类。

    微信小程序开发二维码生成工具类 前言 业务背景 设计思路 具体实现 接下来我们进行工具的改造 前言 或许这是你搜寻的第n篇文章来解决你项目中的问题,虽然我不能去替你完全适配你的业务需求,但是我可以给你 ...

  4. zxing二维码生成工具类

    图片生成工具生成 1.支持多中形式的图片,二维码,条形码 2.支持一张图片多个二维码 3.支持二维码图片上加logo 4.支持图片头部底部添加文字描述 public class ZxingEncode ...

  5. 用ZXING生成二维码的工具类(可以去掉白边,添加logo)

    ===========================用ZXING生成二维码的工具类(可以去掉白边,添加logo)========================== /**  * @auther g ...

  6. 生成二维码、识别二维码的工具类

    笔者日常: 第一次用markdown写文章,有点手生~ 声明: 此工具类由本人二次整理改造后分享给大家,原编写者未知,虽然本人重写了大部分逻辑代码,但是核心部分仍然是采用的原来的代码.若涉及侵权问题, ...

  7. 支付宝支付 第五集:二维码生成工具

    支付宝支付 第五集:二维码生成工具 一.代码 目录结构 BufferedImageLuminanceSource.java package com.dzy.alipay.qrcode;import c ...

  8. 草料二维码-免费的二维码生成工具

    二维码又称QR Code,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型.人们可以把名片.邮件.网址.电话号码.等信息生成对应的二 ...

  9. 二维码生成工具微信小程序源码下载

    二维码生成工具 支持上传二维码logo和调整尺寸背景颜色等等 无需域名与服务器 使用教程,用HBuilder X软件打卡项目然后运行到微信小程序即可 下方是演示图: 小程序源码下载地址: (已更新)二 ...

最新文章

  1. 拼多多稳了,字节跳动开发新APP,是谁杀死了淘宝?
  2. ZOJ 1292 Integer Inquiry
  3. 12.当效率至关重要时,请在map::operator[]与map::insert之间谨慎作出选择
  4. java的网络工具netty简介
  5. 工作391-选择Hbuilder x作为开发工具
  6. [css] 如何写高效的CSS?
  7. linux如何控制ftp不能get,ftp get/push连接到linux时,都是使用的linux命令
  8. 计算机网络原理html,计算机网络原理与应用html..ppt
  9. 你不知道的Event Loop
  10. cloudstack基础知识
  11. python实现自动登录网页用户名密码_Python使用selenium实现网页用户名 密码 验证码自动登录功能...
  12. 10.7 a.m.小结
  13. 华为盒子EC6110-T-通刷-免拆刷机固件及教程
  14. 软件评测师32小时-第一小时 软件测试概论
  15. stm32 带通滤波器_带通滤波器详解_带通滤波器工作原理_带通滤波器原理图
  16. IOTQQ(OPQbot)—QQ机器人、部署在linux上(一步步实
  17. python for spss statistics_IBM SPSS Statistics 与用户自定义 Python 模块的集成及分析
  18. 【HTML】图片标签(img)
  19. python中def main是什么意思_浅析Python中的main函数
  20. source insight 3.5 配置文件GLOBAL.CF3--免费

热门文章

  1. 怎么把ppt转化为word文档格式
  2. VB6.0开发的计算机串口通讯程序1
  3. Java处理文件上传 00 截断问题
  4. visual studio code无法生成可执行文件
  5. 基于PanoSim仿真开发平台BSD和RCTA的构思
  6. Ubuntu远程SSH连接与远程桌面连接
  7. Android 设置壁纸流程
  8. 使用C4D灵动诠释宇舶表限量版陀飞轮全蓝宝石腕表的冰肌玉骨
  9. 【KDD2022教程】图算法公平性:方法与趋势
  10. 【Git】Git的使用与学习