一、前言

我们这里对ZXing不做过多介绍,不清楚的小伙伴可以自行百度。

直接进入正题,这里会封装成工具使用:

二、Hutool工具包+ZXing

这里我们使用Hutool工具包+ZXing,Hutool为我们封装了二维码生成,我们只需要将logo与生成的二维码进行合成即可。

1.添加依赖

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.0.3</version>
</dependency>

因为Hutool的非强制依赖性,因此zxing需要自行引入

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

2.编写代码

创建LogoConfig类定义logo的属性

import java.awt.*;/*** @Author: Yhq* @date: 2019/11/12 11/25*/
public class LogoConfig {// logo默认边框颜色public static final Color DEFAULT_BORDERCOLOR = Color.WHITE;// logo默认边框宽度public static final int DEFAULT_BORDER = 2;// logo大小默认为照片的1/6public static final int DEFAULT_LOGOPART = 6;private final int border = DEFAULT_BORDER;private final Color borderColor;private final int logoPart;public LogoConfig() {this(DEFAULT_BORDERCOLOR, DEFAULT_LOGOPART);}public LogoConfig(Color borderColor, int logoPart) {this.borderColor = borderColor;this.logoPart = logoPart;}public Color getBorderColor() {return borderColor;}public int getBorder() {return border;}public int getLogoPart() {return logoPart;}
}

生成二维码,获取logo图片,合成带logo的二维码

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Date;/*** @Author: Yhq* @date: 2019/11/12 11:31*/
public class QrCodeUtils {// 二维码默认宽高private static final int DEFAULT_WIDTH_AND_HEIGHT = 300;// 不带logo二维码保存地址private static final String QR_CODE_PATH = "/Users/dake/apps/";// 带logo二维码保存路径private static final String LOGO_PATH = "/Users/dake/apps/";/*** 生成带logo的二维码** @param logoPath logo地址* @param content  二维码内容* @return 成功返回二维码地址,如果失败返回 "fail" 字符串*/public static String create(String logoPath, String content) {try {QrConfig config = new QrConfig(DEFAULT_WIDTH_AND_HEIGHT, DEFAULT_WIDTH_AND_HEIGHT);// 设置边距,既二维码和背景之间的边距config.setMargin(3);// 生成二维码到文件,也可以到流String name = IdUtil.objectId() + new Date().getTime();File qrName = QrCodeUtil.generate(content, config, FileUtil.file(QR_CODE_PATH + name));//logo地址File logoFile = new File(logoPath);//合成带logo二维码return addLogo(qrName, logoFile, new LogoConfig());} catch (Exception e) {e.printStackTrace();}return "fail";}/*** 合成带logo的二维码** @param qrPic      二维码文件路径* @param logoPic    logo文件路径* @param logoConfig 配置类*/private static String addLogo(File qrPic, File logoPic, LogoConfig logoConfig) {if (!qrPic.isFile() || !logoPic.isFile()) {System.out.println("file not found!");System.exit(0);}try {// 1、读取二维码图片,并构建绘图对象BufferedImage image = ImageIO.read(qrPic);Graphics2D graph = image.createGraphics();// 2、读取logo图片BufferedImage logo = ImageIO.read(logoPic);int widthLogo = image.getWidth() / logoConfig.getLogoPart();int heightLogo = image.getHeight() / logoConfig.getLogoPart();// 3、计算图片放置的位置int x = (image.getWidth() - widthLogo) / 2;int y = (image.getHeight() - heightLogo) / 2;// 4、绘制图片graph.drawImage(logo, x, y, widthLogo, heightLogo, null);graph.drawRoundRect(x, y, widthLogo, heightLogo, 10, 10);graph.setStroke(new BasicStroke(logoConfig.getBorder()));graph.setColor(logoConfig.getBorderColor());graph.drawRect(x, y, widthLogo, heightLogo);graph.dispose();String logoName = IdUtil.objectId() + new Date().getTime() + ".jpg";String code = LOGO_PATH + logoName;boolean jpeg = ImageIO.write(image, "jpeg", new File(code));if (jpeg) {return code;}} catch (Exception e) {e.printStackTrace();}return "fail";}public static void main(String[] args) {//测试String s = create("/Users/dake/apps/test.jpg", "我爱你中国");System.out.println(s);}
}

三、测试一下

运行main

生成后的二维码:

至此ZXing3.3.3生成带logo二维码就完成了!!! 

如果有问题,请在下方评论,或者加群讨论 200909980

ZXing3.3.3 生成二维码带logo相关推荐

  1. asp.net 生成二维码,带logo,带下方文字

    目标可以生成带网址的信息的二维码,可以是带logo 或者不带logo,或者下方带一行说明文字 nuget 下载二维码管理包 public static Bitmap GenerateQrCode(st ...

  2. [Java] Java生成二维码带LOGO, LOGO加圆角白框

    先来看看效果: 实现: 生成指定文字内容的二维码 二维码中间嵌入LOGO 二维码做圆角和白色边框处理 新需求不断, 这不, 又来了个想生成带用户头像的需求. 蛮简单的- 在这里造完轮子分享给大家 因为 ...

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

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

  4. vue 生成二维码(带logo)与条形码

    1.生成二维码安装 npm install  --save qrcodejs 实现代码 <template><div><qrcode :url="jmc&quo ...

  5. zxing 生成二维码 带logo

    ·1生成带logo的二维码,并转base64 public static String generateBase64Img(String code_url,int width,int height,S ...

  6. java生成二维码(带logo)

    利用hutool工具实现java二维码生成 官网链接:https://www.hutool.cn/ 添加依赖 <dependency><groupId>cn.hutool< ...

  7. java生成二维码(在图片上生成二维码(二维码带logo)并且在图片上添加文字标签)

    1pom.xml <!--生成二维码--> <dependency><groupId>cn.hutool</groupId><artifactId ...

  8. qrcode.js 生成二维码包含logo和背景图片及IE下载二维码

    思路: 1. 通过qrcode.js 生成带logo的二维码 2. 将背景图片.logo与生成的二维码图通过canvas 绘制在一起形成一个新的canvas 3. 将canvas 转成base64的u ...

  9. Android彩色二维码带logo

    最近看到彩色二维码挺有意思,感觉我们常见的黑色二维码有些单调. 看了一下大牛们的博客,这里在大牛的基础上更改了一下.做了一个有颜色渐变的二维码. 在这里记录一下自己的学习成果.我这里用的是zxing- ...

最新文章

  1. linux中查看lvm的名称,关于Linux中LVM的使用总结
  2. cors在服务器还是接口_cors
  3. 伤害世界怎么自建服务器,Hurtworld伤害世界服务器怎么架设?服务器架设图文教程...
  4. EXE与SYS通信(缓冲模式)
  5. PYTHON1.面向对象_day04
  6. 源码分享,送你一份Google Python class源码
  7. Java知识点汇总1
  8. 浮动QQ在线客服网站QQ在线咨询
  9. nginx request_uri接收到的参数只有一个
  10. qt 矩形连续移动_建筑案例:海门謇公湖农产品展销中心-咬合的连续曲面坡屋顶...
  11. 本来都对象棋失去兴趣了, 是特殊的原因让我又开始从侧面搞象棋方面的擦边的游戏...
  12. 简易呼吸灯c语言程序,51单片机(呼吸灯)c语言.doc
  13. [渝粤教育] 南阳理工学院 大学计算机基础 参考 资料
  14. SQL中使用正则表达式
  15. html5网页制作的基本步骤,网页制作流程介绍
  16. cout输出中加入双引号
  17. 知名游戏设计师的 GitHub 仓库被删,CEO 道歉;工信部向四家公司发放 5G 牌照
  18. 大数据的淘金之旅,数据治理之数据资产管理
  19. html中outline属性,css的outline属性的作用是什么
  20. 太原理工大学计算机科学与技术老师 王颖,王华 - 太原理工大学 - 信息与计算机学院...

热门文章

  1. 全网最细最全OLAP之clickhouse笔记|clickhouse文档|clickhouse揭秘文档(一)--clickhouse简介
  2. C语言雪花算法,雪花算法运用
  3. java jwidnow_Web安全通讯之JWT的Java实现
  4. Python实战之如何爬取猫眼电影排行?本文详解
  5. 华硕笔记本linux双系统引导,华硕笔记本如何安装win7/win10双系统
  6. 一个连珠五子棋的算法
  7. idea右边没有工具栏,没有maven窗口和Database窗口
  8. 社会网络(基于python实现)-karate空手道
  9. 【技术】基于 SpringBoot实现 Word 和 PDF 识别
  10. 嗨呀科技:教你如何轻松把视频做成表情包