原文:https://www.cnblogs.com/zhangzhen894095789/p/6623041.html

zxing实现二维码生成和解析

 

 

二维码的生成与解析。有多种途径。我选择用大品牌,google老大的zxing。

gitHub链接是(我用的3.0.0,已经是nio了)

https://github.com/zxing/zxing/tree/zxing-3.0.0

  1. // 其中输出图像和读取图像的类在core包
  2. MultiFormatReader
  3. MultiFormatWriter
  4. // 生成矩阵的类在javase的包里
  5. MatrixToImageWriter

pom.xml中的配置为

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.shihy</groupId>
  5. <artifactId>qrcode</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <packaging>jar</packaging>
  8. <name>qrcode</name>
  9. <url>http://maven.apache.org</url>
  10. <properties>
  11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  12. </properties>
  13. <dependencies>
  14. <dependency>
  15. <groupId>com.google.zxing</groupId>
  16. <artifactId>core</artifactId>
  17. <version>3.0.0</version>
  18. </dependency>
  19. <dependency>
  20. <groupId>com.google.zxing</groupId>
  21. <artifactId>javase</artifactId>
  22. <version>3.0.0</version>
  23. </dependency>
  24. <dependency>
  25. <groupId>junit</groupId>
  26. <artifactId>junit</artifactId>
  27. <version>4.10</version>
  28. </dependency>
  29. <dependency>
  30. <groupId>com.alibaba</groupId>
  31. <artifactId>fastjson</artifactId>
  32. <version>1.1.29</version>
  33. </dependency>
  34. </dependencies>
  35. </project>

生成图像与解析图像的测试工具类:

  1. package com.polysaas.edu.qrcode;
  2. import java.awt.image.BufferedImage;
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.nio.file.FileSystems;
  6. import java.nio.file.Path;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. import javax.imageio.ImageIO;
  10. import org.junit.Test;
  11. import com.alibaba.fastjson.JSONObject;
  12. import com.google.zxing.BarcodeFormat;
  13. import com.google.zxing.Binarizer;
  14. import com.google.zxing.BinaryBitmap;
  15. import com.google.zxing.DecodeHintType;
  16. import com.google.zxing.EncodeHintType;
  17. import com.google.zxing.LuminanceSource;
  18. import com.google.zxing.MultiFormatReader;
  19. import com.google.zxing.MultiFormatWriter;
  20. import com.google.zxing.NotFoundException;
  21. import com.google.zxing.Result;
  22. import com.google.zxing.WriterException;
  23. import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
  24. import com.google.zxing.client.j2se.MatrixToImageWriter;
  25. import com.google.zxing.common.BitMatrix;
  26. import com.google.zxing.common.HybridBinarizer;
  27. public class QRCodeTest {
  28. /**
  29. * 生成图像
  30. *
  31. * @throws WriterException
  32. * @throws IOException
  33. */
  34. @Test
  35. public void testEncode() throws WriterException, IOException {
  36. String filePath = "D://";
  37. String fileName = "zxing.png";
  38. JSONObject json = new JSONObject();
  39. json.put(
  40. "zxing",
  41. "https://github.com/zxing/zxing/tree/zxing-3.0.0/javase/src/main/java/com/google/zxing");
  42. json.put("author", "shihy");
  43. String content = json.toJSONString();// 内容
  44. int width = 200; // 图像宽度
  45. int height = 200; // 图像高度
  46. String format = "png";// 图像类型
  47. Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
  48. hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
  49. BitMatrix bitMatrix = new MultiFormatWriter().encode(content,
  50. BarcodeFormat.QR_CODE, width, height, hints);// 生成矩阵
  51. Path path = FileSystems.getDefault().getPath(filePath, fileName);
  52. MatrixToImageWriter.writeToPath(bitMatrix, format, path);// 输出图像
  53. System.out.println("输出成功.");
  54. }
  55. /**
  56. * 解析图像
  57. */
  58. @Test
  59. public void testDecode() {
  60. String filePath = "D://zxing.png";
  61. BufferedImage image;
  62. try {
  63. image = ImageIO.read(new File(filePath));
  64. LuminanceSource source = new BufferedImageLuminanceSource(image);
  65. Binarizer binarizer = new HybridBinarizer(source);
  66. BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
  67. Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();
  68. hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
  69. Result result = new MultiFormatReader().decode(binaryBitmap, hints);// 对图像进行解码
  70. JSONObject content = JSONObject.parseObject(result.getText());
  71. System.out.println("图片中内容:  ");
  72. System.out.println("author: " + content.getString("author"));
  73. System.out.println("zxing:  " + content.getString("zxing"));
  74. System.out.println("图片中格式:  ");
  75. System.out.println("encode: " + result.getBarcodeFormat());
  76. } catch (IOException e) {
  77. e.printStackTrace();
  78. } catch (NotFoundException e) {
  79. e.printStackTrace();
  80. }
  81. }
  82. }

测试生成图像为:

解析到的内容为:

  1. 图片中内容:
  2. author: shihy
  3. zxing:  https://github.com/zxing/zxing/tree/zxing-3.0.0/javase/src/main/java/com/google/zxing
  4. 图片中格式:
  5. encode: QR_CODE

java zxing实现二维码生成和解析zxing实现二维码生成和解析的更多相关文章

  1. Android 二维码 生成和识别(附Demo源码)

    今天讲一下目前移动领域很常用的技术——二维码.现在大街小巷.各大网站都有二维码的踪迹,不管是IOS. Android.WP都有相关支持的软件.之前我就想了解二维码是如何工作,最近因为工作需要使用相关技 ...

  2. Android二维码识别 开源项目ZXing的编译

    Android二维码识别 开源项目ZXing的编译 Android端的条形码/二维码识别功能 因为手机端的输入不是很方便,所以条形码/二维码的扫描是一种很有效的解决手段. 比较流行的手机应用中,常用的 ...

  3. 使用java解析和制作二维码

    项目结构 文件源码 QR.zip 第一步:导入zxing的两个架包 core.jar和javase.jar 第二步:使用工具类 MatrixToImageWriter.java package uti ...

  4. 【转】Android 二维码 生成和识别(附Demo源码)--不错

    原文网址:http://www.cnblogs.com/mythou/p/3280023.html 今天讲一下目前移动领域很常用的技术——二维码.现在大街小巷.各大网站都有二维码的踪迹,不管是IOS. ...

  5. 二维码扫描开源库ZXing定制化【转】

    转自:http://www.cnblogs.com/sickworm/p/4562081.html 最近在用ZXing这个开源库做二维码的扫描模块,开发过程的一些代码修改和裁剪的经验和大家分享一下. ...

  6. 二维码扫描开源库ZXing定制化

    最近在用ZXing这个开源库做二维码的扫描模块,开发过程的一些代码修改和裁剪的经验和大家分享一下. 建议: 如果需要集成到自己的app上,而不是做一个demo,不推荐用ZXing的Android外围开 ...

  7. (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例

    Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21我要评论 这篇文章主要介绍了Android项目 ...

  8. C# 生成中间含有LOGO的二维码

    效果如下: 1.无LOGO的二维码: 2.含有LOGO的二维码: 一.下载QrCode程序集: 使用的程序集有: 下载地址: http://zxingnet.codeplex.com/ 二.QRCod ...

  9. Python zxing 库解析(条形码二维码识别)

    各种扫码软件 最近要做个二维码识别的项目,查到二维码识别有好多开源的不开源的软件 http://www.oschina.net/project/tag/238/ Zbar 首先试了一下Zbar,pyt ...

随机推荐

  1. 在 SQL Server 2005 中配置数据库邮件

    一.            SQL Server发邮件原理和组件介绍: 数据库邮件有4个组件:配置文件.邮件处理组件.可执行文件以及“日志记录和审核组件”. l  配置组件包括: 1)数据库邮件帐户包 ...

  2. 常用SQL Server 语句

       常用SQL语句大全 1.//创建数据库 CREATE DATABASE DBName 2.//删除数据库 DROP DATABASE DBName 3.//备份SQL SERVER --- 创建 ...

  3. C#基础之数据类型

    c#有15个预定义类型,其中13个是值类型,两个是引用类型(string 和 object) 1.整型 2.浮点类型 float数据类型用于较小的浮点数,因为它要求的精度较低. double数据类型比 ...

  4. 组件库按需加载 借助babel-plugin-import实现

    前段时间一直在基于webpack进行前端资源包的瘦身.在项目中基于路由进行代码分离,http://www.cnblogs.com/legu/p/7251562.html.对于公司内部的组件库,所有内容 ...

  5. Linux下光盘镜像生成和刻录

    mkiosfs命令如在/root/下有文件file1 file2 file3maiosfs -o img.ios file1 file2 file3该命令将file1 file2 file3放入到im ...

  6. Web前端开发最佳实践(10):JavaScript代码不好读,不好维护?你需要改变写代码的习惯

    前言 这篇文章本应该在上一篇文章:使用更严格的JavaScript编码方式,提高代码质量之前发布,但当时觉得这篇文章太过基础,也就作罢.后来咨询了一些初级的开发者,他们觉得有必要把这篇文章也放上来.尽 ...

  7. 2018 ACM-ICPC, Syrian Collegiate Programming Contest F - Pretests SOS dp

    #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk mak ...

  8. Centos 7.2 安装 Python 3.5(适用于Python 3所有版本安装)

    提示:我们必须不能破坏系统的环境.因为几个关键的应用程序依赖于Python 2.7.5(centos 7默认版本).如果替换了系统的Python环境就会发生很多难以预见的错误,甚至要重装系统. 安装前 ...

  9. Bechmarksql

    使用方法 1.配置JDK环境 JDK最好是1.5以上的版本 JAVA_HOME=/usr/java/jdk1.6.0_22 PATH=$PATH:$JAVA_HOME/bin 2.准备工作 把要测试的 ...

  10. 因为修改linux selinux修改错误产生的问题及解决办法

    会出现这个错误: not syncing attempted to kill init 解决办法是: 开机后一直按e 然后按这个修改: https://www.deep-silver.com/kern ...