使用谷歌的开源包ZXing

maven引入如下两个包即可

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

  

1、工具类

package com.unicom.zxing;import com.google.zxing.*;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.QRCodeReader;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Hashtable;/*** 二维码生成和读的工具类**/
public class ZXingUtil {/*** 生成包含字符串信息的二维码图片* @param outputStream 文件输出流路径* @param content 二维码携带信息* @param qrCodeSize 二维码图片大小* @param imageFormat 二维码的格式* @throws WriterException* @throws IOException*/public static boolean createQrCode(OutputStream outputStream, String content, int qrCodeSize, String imageFormat) throws WriterException, IOException{//设置二维码纠错级别MAPHashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<EncodeHintType, ErrorCorrectionLevel>();hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);  // 矫错级别QRCodeWriter qrCodeWriter = new QRCodeWriter();//创建比特矩阵(位矩阵)的QR码编码的字符串BitMatrix byteMatrix = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, qrCodeSize, qrCodeSize, hintMap);// 使BufferedImage勾画QRCode  (matrixWidth 是行二维码像素点)int matrixWidth = byteMatrix.getWidth();BufferedImage image = new BufferedImage(matrixWidth-200, matrixWidth-200, BufferedImage.TYPE_INT_RGB);image.createGraphics();Graphics2D graphics = (Graphics2D) image.getGraphics();graphics.setColor(Color.WHITE);graphics.fillRect(0, 0, matrixWidth, matrixWidth);// 使用比特矩阵画并保存图像graphics.setColor(Color.BLACK);for (int i = 0; i < matrixWidth; i++){for (int j = 0; j < matrixWidth; j++){if (byteMatrix.get(i, j)){graphics.fillRect(i-100, j-100, 1, 1);}}}return ImageIO.write(image, imageFormat, outputStream);}/*** 读二维码并输出携带的信息*/public static void readQrCode(InputStream inputStream) throws IOException{//从输入流中获取字符串信息BufferedImage image = ImageIO.read(inputStream);//将图像转换为二进制位图源LuminanceSource source = new BufferedImageLuminanceSource(image);BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));QRCodeReader reader = new QRCodeReader();Result result = null ;try {result = reader.decode(bitmap);} catch (ReaderException e) {e.printStackTrace();}System.out.println(result.getText());}/*** 测试代码* @throws WriterException*/public static void main(String[] args) throws IOException, WriterException {//生成二维码到E盘createQrCode(new FileOutputStream(new File("E:\\test.jpg")),"https://www.baidu.com/",900,"JPEG");//下面是读取二维码内容readQrCode(new FileInputStream(new File("E:\\test.jpg")));}}

直接运行Main方法,即可在E盘生成二维码

微信扫一扫,即可跳转到百度网页

转载于:https://www.cnblogs.com/Donnnnnn/p/10837620.html

ZXing生成二维码、读取二维码相关推荐

  1. H5实现扫码读取二维码条形码功能(二维码+条形码)

    本文主要介绍二维码实现的原理 1.使用插件 npm install @zxing/library 2.主要用到 BrowserMultiFormatReader 这个构造函数,用于打开摄像头 impo ...

  2. ZXing生成多种不同样式的二维码

    已经有好心人为我们做好了,我只做大自然的搬运工. 因为项目要做一个要求卡的功能,里面有一个功能是要可以生成多种样式的二维码满足用户爱美的要求,这里帮了我的大忙. 效果图 地址双手奉上:https:// ...

  3. java生成二维码读取二维码,面试真题解析

    拼多多一面 首先自我介绍 参加过哪些项目 并发编程三要素? 实现可见性的方法有哪些? 多线程的价值? 创建线程的三种方式的对比? 画出线程的状态流转图 常用的并发工具类有哪些? CyclicBarri ...

  4. 小程序 输入框输入 扫描二维码读取二维码内容 传参实现

    1.wxml页面 <view class="groupmsg"><view class="content">客户批次:</view ...

  5. 利用iText和zxing生成和读pdf417二维码

    为什么80%的码农都做不了架构师?>>>    前面的一些博文中已经提到了zxing这个开源工具生成和读取二维码图片,仅从学习的角度来看,可以告一个段落.在实际的生产环境中,应用zx ...

  6. 一行代码,生成和读取二维码!

    文 | 闲欢 来源:Python 技术「ID: pythonall」 二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的.黑白相间的.记录数据符号信息的图形. 二维码被称为快速响应码,可 ...

  7. Python 二维码的读取与生成:使用链接生成二维码、读取二维码里的链接

    Python 二维码的读取与生成演示 ① 使用链接生成二维码 ② 读取二维码里的链接 [ 文章推荐 ] Python 绘制中国地图:使用 pyecharts 最新版本绘制中国地图实例详解,个性化地图定 ...

  8. ios使用AVFoundation读取二维码的方法

    二维码(Quick Response Code,简称QR Code)是由水平和垂直两个方向上的线条设计而成的一种二维条形码(barcode).可以编码网址.电话号码.文本等内容,能够存储大量的数据信息 ...

  9. ZXing 生成二维码 QRCode 和条码 CODE128 和 ZXing 解析或读取 QR_Code 和 条码 CODE_128

    二维码是国际标准,由日本某公司发明,并保留版权,免费让全世界使用,目前在中国金融支付领域大放异彩. 条码的联合发明人诺曼·约瑟夫·伍德兰德(Norman Joseph Woodland)于上世纪70年 ...

最新文章

  1. 网络推广下叮咚买菜已完成D轮融资,生鲜电商下一次融资又在何方?
  2. glance系列一:glance基础
  3. Java 中的异常和处理详解
  4. 地图的平移、缩放的实现(android版)
  5. return ,continue,break的用法与区别总结
  6. 二叉树的前序、中序、后续、层序遍历(包含递归与非递归)
  7. C#设计模式之7-桥接模式
  8. pandas删除index与某一列有重复值所在的行
  9. 滑盖、双屏手机降价至冰点,为何仍无人问津?
  10. 洗车房,无人车的噩梦
  11. [POI2006]Tet-Tetris 3D
  12. 回调函数,事件管理器
  13. android 8.0 红米note3,红米Note3抢在小米6前面升到8.0,但是bug满天飞
  14. mysql opt frm_将.frm和.opt文件导入MySQL
  15. 阿里巴巴数据库架构演进分析
  16. 路由器接交换机再接无线路由器,应该怎么设置
  17. 外贸老手告诉你:外贸实用工具
  18. 【php + MySQL + Android】本地实验环境搭建
  19. 思科6509 引擎720-3BXL 更换风扇造成设备重启
  20. 如何拍背景虚化的照片_拍摄人像背景虚化的照片怎么拍?

热门文章

  1. QFrame类的使用
  2. 【产品规划】实现一个智能化的数据清洗工具(系列二)
  3. Transformer入门学习
  4. vite vue3 代理发布不停自动刷新的问题
  5. 如何复制网上文章内容到语雀
  6. jsonp跨域的缺点ajax缺点,浅析JSONP解决Ajax跨域访问问题的思路详解
  7. Robotics: Aerial Robotics(空中机器人)笔记(六):无人机运动规划
  8. oracle删除字段中特定字符串
  9. 如何巧妙的获取Win 7/xp开机密码方法(粘滞键漏洞)
  10. android高德SDK,Marker的zIndex导致的遮罩层问题解决