博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用com.google.zxing生成、解析二维码
阅读量:6291 次
发布时间:2019-06-22

本文共 3132 字,大约阅读时间需要 10 分钟。

hot3.png

 在下载zxing压缩包(我用的Zxing-1.5),解压后将core/src和javase/src中的com文件夹整体复制到你的java工程中,这两个包里面包含java所用的java源码,

代码如下:

 

package com.easyoa.test;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.Hashtable;import javax.imageio.ImageIO;import com.google.zxing.BarcodeFormat;import com.google.zxing.BinaryBitmap;import com.google.zxing.DecodeHintType;import com.google.zxing.LuminanceSource;import com.google.zxing.MultiFormatReader;import com.google.zxing.MultiFormatWriter;import com.google.zxing.Reader;import com.google.zxing.ReaderException;import com.google.zxing.Result;import com.google.zxing.client.j2se.BufferedImageLuminanceSource;import com.google.zxing.common.ByteMatrix;import com.google.zxing.common.HybridBinarizer;public class Test {   private static final int BLACK = 0xff000000;   private static final int WHITE = 0xFFFFFFFF; /**  * @param args  */ public static void main(String[] args) {  Test test=new Test();  test.encode(); test.decode(); } //编码 /**  * 在编码时需要将com.google.zxing.qrcode.encoder.Encoder.java中的  *  static final String DEFAULT_BYTE_MODE_ENCODING = "ISO8859-1";修改为UTF-8,否则中文编译后解析不了  */ public void encode(){  try {    String str = "姓名:张三,性别:男,年龄:25,籍贯:中国北京,";// 二维码内容    String path = "D://test.png";    ByteMatrix byteMatrix;    byteMatrix= new MultiFormatWriter().encode(str, BarcodeFormat.QR_CODE, 200, 200);   File file = new File(path);       writeToFile(byteMatrix, "png", file);   } catch (Exception e) {    e.printStackTrace();   } } public static void writeToFile(ByteMatrix matrix, String format, File file) throws IOException {BufferedImage image = toBufferedImage(matrix);ImageIO.write(image, format, file);} public static BufferedImage toBufferedImage(ByteMatrix matrix) {     int width = matrix.getWidth();     int height = matrix.getHeight();     BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);     for (int x = 0; x < width; x++) {       for (int y = 0; y < height; y++) {         image.setRGB(x, y, matrix.get(x, y) == 0 ? BLACK:WHITE);       }     }     return image;   } //解码 public void decode(){  try{   Reader reader = new MultiFormatReader();    String imgPath = "D://test.png";    File file = new File(imgPath);    BufferedImage image;    try {     image = ImageIO.read(file);     if (image == null) {     System.out.println("Could not decode image");     }     LuminanceSource source = new BufferedImageLuminanceSource(image);     BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));     Result result;     Hashtable hints= new Hashtable();     hints.put(DecodeHintType.CHARACTER_SET, "utf-8");     //解码设置编码方式为:utf-8,    result = new MultiFormatReader().decode(bitmap,hints);     String resultStr = result.getText();     System.out.println("解析后内容:"+resultStr);   } catch (IOException ioe) {     System.out.println(ioe.toString());    } catch (ReaderException re) {     System.out.println(re.toString());    }  }catch(Exception ex){   System.out.println(ex.toString());  } }}

好了,运行一下是不是很简单?

生成后的二维码:

解码后:

解析后内容:姓名:张三,性别:男,年龄:25,籍贯:中国北京,

欢迎朋友留言交流;

转载于:https://my.oschina.net/hokkaido/blog/83799

你可能感兴趣的文章
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>
safari下video标签无法播放视频的问题
查看>>
01 iOS中UISearchBar 如何更改背景颜色,如何去掉两条黑线
查看>>
对象的继承及对象相关内容探究
查看>>
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
js数组的操作
查看>>
springmvc Could not write content: No serializer
查看>>
Python系语言发展综述
查看>>
新手 开博
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>