通过java生成读取二维码详解

 更新时间:2019年05月29日 11:22:14   作者:Cold不叫寇德  
这篇文章主要介绍了java二维码生成读取详解,二维码再生活在无处不在,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面和小编一起来学习一下吧

前言

在开始之前,我们需要先引入二维码生成和读取的jar包,这里我用的是qrcodejar

新建一个Java工程,在工程中添加一个lib目录,把两个Jar包放到lib目录下,不要忘了add as libiary

在build.gradle中添加配置
compile fileTree(dir:'lib',include:['*.jar'])
(这里我用的是gradle)

准备工作结束,马上开始

生成二维码

public class QRcodeTest {
public static void main(String[] args) throws Exception{
Qrcode qrcode = new Qrcode();
qrcode.setQrcodeErrorCorrect('M');//纠错等级(分为L、M、H三个等级)
qrcode.setQrcodeEncodeMode('B');//N代表数字,A代表a-Z,B代表其它字符
qrcode.setQrcodeVersion(10);//版本
//生成二维码中要存储的信息
String qrData ="http://www.baidu.com";
//设置一下二维码的像素
int width = 67+12*(10-1);
int height = 67+12*(10-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("gb2312");
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("E:/code/qrcodebd.png"));
}
}

这样就可以生成一张二维码图片,扫描二维码,会跳转到百度首页。

二维码图片

public class MyQrCodeImage implements QRCodeImage {
BufferedImage bufferedImage;
public MyQrCodeImage(BufferedImage bufferedImage) {
this.bufferedImage = bufferedImage;
}
public int getHeight() {
return bufferedImage.getHeight();
}
public int getPixel(int arg0, int arg1) {
return bufferedImage.getRGB(arg0, arg1);
}
public int getWidth() {
return bufferedImage.getWidth();
}

}

读取二维码

public class ReadQrCode {
public static void main(String[] args) throws IOException {
File file = new File("E:/code/qrcodebd.png");
BufferedImage bufferedImage = ImageIO.read(file);
Qrcode qrcode = new Qrcode();
QRCodeDecoder codeDecoder = new QRCodeDecoder();
String result = new String(codeDecoder.decode(new MyQrCodeImage(bufferedImage)),"gb2312");
System.out.println(result);
}
}

读取二维码的内容为http://www.baidu.com

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 单例Bean注入多例Bean属性失效问题的四种解决方案

    单例Bean注入多例Bean属性失效问题的四种解决方案

    在实际的开发过程中,我们有可能会遇到这样一个场景:多例对象 A 需要作为属性注入给单例对象 B,但是我们每次获取 B 的时候,发现注入的 A 每次都是同一个,并不是多例的,所以本文给大家介绍了如何解决单例Bean注入多例Bean属性失效问题,需要的朋友可以参考下
    2024-05-05
  • Java源码角度分析HashMap用法

    Java源码角度分析HashMap用法

    这篇文章主要介绍了Java源码角度分析HashMap用法,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • SpringBoot实现连接nacos并支持多环境部署

    SpringBoot实现连接nacos并支持多环境部署

    这篇文章主要介绍了SpringBoot实现连接nacos并支持多环境部署方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • SpringBoot集成Nacos的详细教程

    SpringBoot集成Nacos的详细教程

    这篇文章主要介绍了SpringBoot集成Nacos的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Java8简单了解Lambda表达式与函数式接口

    Java8简单了解Lambda表达式与函数式接口

    这篇文章主要介绍了Java8简单了解Lambda表达式与函数式接口,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • SpringMVC中Controller类数据响应的方法

    SpringMVC中Controller类数据响应的方法

    这篇文章主要介绍了SpringMVC中的数据响应的问题,主要来了解 Controller 类如何进行数据响应的,本文给大家介绍的非常详细,需要的朋友可以参考下
    2021-07-07
  • Java 在Word中创建邮件合并模板并合并文本和图片的操作方法

    Java 在Word中创建邮件合并模板并合并文本和图片的操作方法

    通过Java程序展示如何来实现创建模板,并通过邮件合并功能来合并文本数据和图片数据的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-07-07
  • Java接口返回省市区树形结构的实现

    Java接口返回省市区树形结构的实现

    本文主要介绍了Java接口返回省市区树形结构的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解

    Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解

    这篇文章主要介绍了Mybatis-Plus的分页插件与乐观锁插件还有通用枚举和多数据源的相关介绍,文中代码附有详细的注释,感兴趣的朋友来看看吧
    2022-03-03
  • Spring Cache相关知识总结

    Spring Cache相关知识总结

    今天带大家学习Spring的相关知识,文中对Spring Cache作了非常详细的介绍,对正在学习Java Spring的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05

最新评论