zxing实现二维码生成和解析

zxing实现二维码生成和解析

博客分类:

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

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

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

Java代码  

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

pom.xml中的配置为

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>

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

Java代码  

  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. }

测试生成图像为:

时间: 2024-11-05 03:18:47

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

java zxing实现二维码生成和解析zxing实现二维码生成和解析

zxing实现二维码生成和解析 二维码 zxing 二维码的生成与解析.有多种途径.我选择用大品牌,google老大的zxing. gitHub链接是(我用的3.0.0,已经是nio了) https://github.com/zxing/zxing/tree/zxing-3.0.0 Java代码   // 其中输出图像和读取图像的类在core包 MultiFormatReader MultiFormatWriter // 生成矩阵的类在javase的包里 MatrixToImageWriter

Android 开发中使用到二维码生成和解析

二维码生成 二维码解析 在项目的开发中, 使用二维码作为数据传递 交换 已经是常态了! 在这我也讲讲自己在项目开发中使用到的二维码. 生成二维码的开发流程 1 应用google 给我们提供的zxing.jar (建议官网下载) 2 使用zxing.jar 的MultiFormatWriter 类 生成一张二维码图片 核心代码块 /** * 方法说明:生成无图片二维码 */ @SuppressWarnings("unused") private Bitmap createTwoCode(

基于zxing的彩色二维码生成与解析

最近正在封装一套基于H5的APP开发平台,而二维码是APP中必不可少的功能. 以前做WEB开发的时候采用的是JS生成条形码和二维码,虽然简洁易用,但是无法添加logo,彩色美化等功能, 由于以前没有接触过图像编程,只好查阅了大量的网络资料,在前人的经验和基础之上,封装了一个基于zxing的工具类, 该工具类目前比较简单,只是实现了普通二维码.logo二维码.彩色二维码和二维码条形码解析几个功能. 根据此工具类可扩展生成LOGO+文字的二维码,暂时不需要没有封装. 采用zxing生成的条形码,无法

QRcode二维码 生成与解析

import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcod

Java条形码/二维码生成和解析

注意-本类依赖jar包文件:core.jar和zxing-javase.jar 下载jar文件,到本博客文件栏目下载. import com.google.zxing.BarcodeFormat; import com.google.zxing.Binarizer; import com.google.zxing.BinaryBitmap; import com.google.zxing.DecodeHintType; import com.google.zxing.EncodeHintType

java二维码生成与解析代码实现

二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1.  高密度编码,信息容量大 可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍. 2.  编码范围广 该条码可以把图片.声音.文字.签字.指纹等可以数字化的信息进行编码,用条码表示出来:可以表示多种语言文字:可表示图像数据. 3.  容错能力强,具有纠错功能 这使得二维条码因穿孔.污损等引起局部损坏时,照样可以正确

[二维码生成和解析][Java]

首先必须的jar包文件:百度云盘下载   Qrcode.jar    Qrcode_Swetake.jar 这两个就是我们的主角 学习之前可以简单了解一下:二维码原理 新建JavaProject    新建lib文件夹 将jar文件复制进去,选中jar文件右键BuildPath -- Add to BuildPath (旁白:这么简单的操作你都还要讲!) 进入正题:   代码如下:    为方面同学理解 注释较多 请理解  如感不适  请见谅  (旁白:废话太多了 我要看代码!) 生成Qrcod

二维码生成与解析代码实现

二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 一.Java 所需jar包:QRCode.jar http://download.csdn.net/detail/wangpeng047/4008532 TwoDimensionCode类:二维码操作核心类 [java] view plaincopy package qrcode; import java.awt.Color; import java.awt.Graphics2D; impo

[转]java二维码生成与解析代码实现

转载地址:点击打开链接 二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1.  高密度编码,信息容量大 可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍. 2.  编码范围广 该条码可以把图片.声音.文字.签字.指纹等可以数字化的信息进行编码,用条码表示出来:可以表示多种语言文字:可表示图像数据. 3.  容错能力强,具有纠错功能 这使得二维条码因穿孔.污损等引起