1. 下载jar包(QRCode.jar)

下载网址如下:

 QRCode生成二维码网址:http://swetake.com/qrcode/index-e.html

2. maven项目手动引入jar包

mvn install:install-file
-DgroupId=包名
-DartifactId=项目名
-Dversion=版本号
-Dpackaging=jar-Dfile=jar文件所在路径1,本地D盘中有个jar,例如:D:\work\Repository\QRCode.jar2,cmd 中执行mvn install命令格式为:mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>例如:install-file -Dfile=D:\work\Repository\QRCode.jar -DgroupId=QRCode -DartifactId=QRCode -Dversion=3.0 -Dpackaging=jar  -DgeneratePom=true -DcreateChecksum=true(注意空格)3,在pom.xml中增加如下语句<dependency><groupId>QRCode</groupId><artifactId>QRCode</artifactId><version>3.0</version>
</dependency>

手动引入成功如下:BUILD SUCCESS

C:\Users\zhm>mvn install:install-file -Dfile=D:\work\Repository\QRCode.jar -DgroupId=QRCode -DartifactId=QRCode -Dversion=3.0 -Dpackaging=jar  -DgeneratePom=true -DcreateChecksum=true
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ standalone-pom ---
[INFO] Installing D:\work\Repository\QRCode.jar to D:\work\Repository\QRCode\QRCode\3.0\QRCode-3.0.jar
[INFO] Installing C:\Users\zhm\AppData\Local\Temp\mvninstall6966241826790879082.pom to D:\work\Repository\QRCode\QRCode\3.0\QRCode-3.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.604 s
[INFO] Finished at: 2018-09-30T15:16:23+08:00
[INFO] Final Memory: 7M/123M
[INFO] ------------------------------------------------------------------------或者不做以上操作引入jar包,pom文件直接指向QRCode.jar在本地路径<dependency><groupId>QRCode</groupId><artifactId>QRCode</artifactId><version>3.0</version><scope>system</scope><systemPath>D:/work/Repository/QRCode.jar</systemPath>
</dependency>

3. 编写实体类实现二维码的生成

package com.st.project.common;import com.swetake.util.Qrcode;
import jp.sourceforge.qrcode.QRCodeDecoder;
import jp.sourceforge.qrcode.data.QRCodeImage;
import jp.sourceforge.qrcode.exception.DecodingFailedException;import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;/*** 二维码工具类*/
public class CreateQRCode {/*** 创建二维码* @param qrData 生成二维码中要存储的信息* @param path   二维码图片存储路径 eg:"D:/qrcode.png"* @throws Exception*/public static boolean creatQrcode(String qrData, String path) {try {Qrcode qrcode = new Qrcode();qrcode.setQrcodeErrorCorrect('M');//纠错等级(分为L、M、H三个等级)qrcode.setQrcodeEncodeMode('B');//N代表数字,A代表a-Z,B代表其它字符qrcode.setQrcodeVersion(7);//版本//设置一下二维码的像素int width = 67 + 12 * (7 - 1);int height = 67 + 12 * (7 - 1);BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//绘图Graphics2D gs = bufferedImage.createGraphics();gs.setBackground(Color.WHITE);gs.setColor(Color.BLACK);gs.clearRect(0, 0, width, height);//清除下画板内容//设置下偏移量,如果不加偏移量,有时会导致出错。int pixoff = 2;byte[] d = qrData.getBytes("utf-8");if (d.length > 0 && d.length < 120) {boolean[][] s = qrcode.calQrcode(d);for (int i = 0; i < s.length; i++) {for (int j = 0; j < s.length; j++) {if (s[j][i]) {gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);}}}}gs.dispose();bufferedImage.flush();ImageIO.write(bufferedImage, "png", new File(path));return true;} catch (IOException e) {e.printStackTrace();return false;}}/*** 解析二维码(QRCode)** @param imgPath 图片路径* @return*/public static String decoderQRCode(String imgPath) {//QRCode 二维码图片的文件File imageFile = new File(imgPath);BufferedImage bufImg = null;String content = null;try {bufImg = ImageIO.read(imageFile);QRCodeDecoder decoder = new QRCodeDecoder();content = new String(decoder.decode(new TwoDimensionCodeImage(bufImg)), "utf-8");} catch (IOException e) {System.out.println("Error: " + e.getMessage());e.printStackTrace();} catch (DecodingFailedException dfe) {System.out.println("Error: " + dfe.getMessage());dfe.printStackTrace();}return content;}}/*** 二维码基础类*/
class TwoDimensionCodeImage implements QRCodeImage {//BufferedImage作用将一幅图片加载到内存中BufferedImage bufImg;public TwoDimensionCodeImage(BufferedImage bufImg) {this.bufImg = bufImg;}@Overridepublic int getWidth() {return bufImg.getWidth();//返回像素宽度}@Overridepublic int getHeight() {return bufImg.getHeight();//返回像素高度}@Overridepublic int getPixel(int i, int i1) {return bufImg.getRGB(i, i1);//得到长宽值,即像素值,i,i1代表像素值}
}

4. controller调用

package com.st.project.controller;import com.st.project.common.AjaxResult;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;import static com.st.project.common.CreateQRCode.creatQrcode;
import static com.st.project.common.CreateQRCode.decoderQRCode;/*** 创建二维码*/
@Controller
@RequestMapping("/qrcode")
public class QrcodeController {@Value("${portals.upload.image.path}")private String qrcodePath; //二维码存储路径/*** 创建二维码* @return*/@ResponseBody@PostMapping("/add.dd")public AjaxResult addQrcode(HttpServletRequest request){AjaxResult ajaxResult = new AjaxResult();ajaxResult.setState(false);String qrData=request.getParameter("qrData");String qrSuffix=request.getParameter("qrSuffix");String qrcode=System.currentTimeMillis()+"."+qrSuffix;String path=qrcodePath+qrcode;boolean getQrcode=creatQrcode(qrData,path);if(getQrcode==true){ajaxResult.setState(true);ajaxResult.setData(qrcode);}return ajaxResult;}/*** 解析二维码* @return*/@ResponseBody@PostMapping("/decoder.dd")public AjaxResult decoderQrcode(HttpServletRequest request){AjaxResult ajaxResult = new AjaxResult();ajaxResult.setState(false);String qrcode=request.getParameter("qrcode");String qrData=decoderQRCode(qrcodePath+qrcode);if(qrData!=null && !"".equals(qrData)){ajaxResult.setState(true);ajaxResult.setData(qrData);}return ajaxResult;}}

此时已生成一张名为qrcode.png的二维码图片:

如何使用 Java 生成二维码?相关推荐

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

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

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

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

  3. java生成二维码打印到浏览器

    java生成二维码打印到浏览器 解决方法: pom.xml的依赖两个jar包: <!-- https://mvnrepository.com/artifact/com.google.zxing/ ...

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

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

  5. java生成二维码,并在前端展示。

    java生成二维码,并在前端展示,扫码实现下载功能. 后端生成二维码以流的形式 前端接收二维码并展示 后端生成二维码以流的形式 这是以流的形式展示二维码.当然也可以以文件的格式,文件格式就是Path ...

  6. java生成二维码(链接生成二维码)

    Java二维码如何生成? awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import com. ...

  7. java生成二维码到文件,java生成二维码转成BASE64

    java生成二维码到文件,java生成二维码转成BASE64 如题,利用java和第三方库,把指定的字符串生成二维码,并且把二维码保存成图片,转换成BASE64格式. 需要的jar文件: packag ...

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

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

  9. Java 生成二维码 zxing生成二维码 条形码 服务端生成二维码 Java生成条形码

    Java 生成二维码 zxing生成二维码 条形码 服务端生成二维码 Java生成条形码 一.关于ZXing 1.ZXing是谷歌开源的支持二维码.条形码 等图形的生成类库:支持生成.和解码功能. G ...

  10. java 生成二维码后叠加LOGO并转换成base64

    1.代码 见文末推荐 2.测试 测试1:生成base64码 public static void main(String[] args) throws Exception {String data = ...

最新文章

  1. 基础数据结构【二】————动态数组,单向链表及链表的反转
  2. Golang实现简单爬虫框架(4)——队列实现并发任务调度
  3. ansible自动化部署(一)
  4. Android 优化电池使用时间——根据需要操作广播接收器
  5. 启动代码和Bootloader的区别和关系介绍
  6. Excel表Ctrl+v和Ctrl shift+v有什么区别_Ctrl键与10个数字键,26个字母键的组合应用技巧解读...
  7. copy 扩展名 包含子文件夹 文件 到某个 文件夹
  8. python缩进教学_Python缩进和选择学习
  9. 百度Android在线语音识别SDK用法
  10. C#中获去一个字符串中的汉字的个数 C#获取字符串全角的个数
  11. 程序员转实施工程师_实施工程师到底做什么的?我认为比程序员接触面更广
  12. 关于Java适配器模式,你该了解这些
  13. 特朗普启动美国AI国家计划,人工智能角逐再添新变化!
  14. [Windows批处理]清除IE缓存
  15. Prolog语言及程序设计汇总
  16. Modifier private is redundant for enum constructor
  17. qt清空qtablew_qt项目:员工信息管理系统
  18. Type-C蓝牙音箱单口可充可OTG方案
  19. 无盘服务器 安装客户机程序,顺网云服务端和客户端安装
  20. 计算机底层:进程与线程。

热门文章

  1. linux每日命令(14):less命令
  2. Java并发机制底层实现原理-volatile
  3. [实战]HM-Router configuration for TP ROOM
  4. 移动端屏幕自适应布局
  5. Css 浏览器兼容性及其其他常见问题
  6. The organization of a typical MVC application
  7. FQND之联想--username@host.domain跟进
  8. 高级数据结构研究-B树系列以及红黑树
  9. linux select 多路复用机制
  10. 图像处理——基于OpenCV的Scharr边缘检测