java生成解析二维码功能
2015-09-23 16:44
513 查看
[java] view
plaincopy
package com.herman.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.NotFoundException;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
/**
* 二维码工具类
* @author Herman.Xiong
* @date 2015-7-10 上午10:52:15
* @version V3.0
* @since jdk 1.6,tomcat 6.0
*/
public class ZxingUtil {
private static final Map<EncodeHintType, ErrorCorrectionLevel> encodeMap = new HashMap<EncodeHintType, ErrorCorrectionLevel>();
private static final Map<DecodeHintType, ErrorCorrectionLevel> decodeMap=new HashMap<DecodeHintType, ErrorCorrectionLevel>();
private static final String charset="UTF-8",format="png";
private static final int size=150;
private ZxingUtil() {}
/**
* 生成二维码图片
* @author Herman.Xiong
* @date 2015-7-10 上午10:26:33
* @param file
* @throws WriterException
* @throws IOException
*/
public static void createQRCode(String data, File file)
throws WriterException, IOException {
MatrixToImageWriter.writeToFile(new MultiFormatWriter().encode(
new String(data.getBytes(charset), charset),
BarcodeFormat.QR_CODE, size, size, encodeMap), format, file);
}
/**
* 读取二维码信息
* @author Herman.Xiong
* @date 2015-7-10 上午10:25:58
* @param filePath 二维码图片路径
* @return
* @throws FileNotFoundException
* @throws IOException
* @throws NotFoundException
*/
public static String readQRCode(String filePath)
throws FileNotFoundException, IOException, NotFoundException {
return new MultiFormatReader().decode(new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(ImageIO.read(new FileInputStream(filePath))))),decodeMap).getText();
}
public static void main(String [] arg){
try{
createQRCode("http://blog.csdn.net/xmtblog", new File("D:\\111.png"));
System.out.println(readQRCode("D:\\111.png"));
//源码下载地址:http://download.csdn.net/detail/xmt1139057136/8886473
//欢迎大家关注我的博客!如有疑问,请加QQ群:454796847共同学习!
}catch(Exception e){
e.printStackTrace();
}
}
}
运行效果如下:
源码下载地址:http://download.csdn.net/detail/xmt1139057136/8886473
plaincopy
package com.herman.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.NotFoundException;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
/**
* 二维码工具类
* @author Herman.Xiong
* @date 2015-7-10 上午10:52:15
* @version V3.0
* @since jdk 1.6,tomcat 6.0
*/
public class ZxingUtil {
private static final Map<EncodeHintType, ErrorCorrectionLevel> encodeMap = new HashMap<EncodeHintType, ErrorCorrectionLevel>();
private static final Map<DecodeHintType, ErrorCorrectionLevel> decodeMap=new HashMap<DecodeHintType, ErrorCorrectionLevel>();
private static final String charset="UTF-8",format="png";
private static final int size=150;
private ZxingUtil() {}
/**
* 生成二维码图片
* @author Herman.Xiong
* @date 2015-7-10 上午10:26:33
* @param file
* @throws WriterException
* @throws IOException
*/
public static void createQRCode(String data, File file)
throws WriterException, IOException {
MatrixToImageWriter.writeToFile(new MultiFormatWriter().encode(
new String(data.getBytes(charset), charset),
BarcodeFormat.QR_CODE, size, size, encodeMap), format, file);
}
/**
* 读取二维码信息
* @author Herman.Xiong
* @date 2015-7-10 上午10:25:58
* @param filePath 二维码图片路径
* @return
* @throws FileNotFoundException
* @throws IOException
* @throws NotFoundException
*/
public static String readQRCode(String filePath)
throws FileNotFoundException, IOException, NotFoundException {
return new MultiFormatReader().decode(new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(ImageIO.read(new FileInputStream(filePath))))),decodeMap).getText();
}
public static void main(String [] arg){
try{
createQRCode("http://blog.csdn.net/xmtblog", new File("D:\\111.png"));
System.out.println(readQRCode("D:\\111.png"));
//源码下载地址:http://download.csdn.net/detail/xmt1139057136/8886473
//欢迎大家关注我的博客!如有疑问,请加QQ群:454796847共同学习!
}catch(Exception e){
e.printStackTrace();
}
}
}
运行效果如下:
源码下载地址:http://download.csdn.net/detail/xmt1139057136/8886473
相关文章推荐
- 【ECLIPSE】两步完成eclipse配色
- SpringMVC进阶(四)——注解开发
- 利用java 泛型实现BaseDao
- Java EE : 二、图解 Cookie(小甜饼)
- JAVA问题总结之28--读取某目录下所有文件
- struts2<s:iterator>遍历map小结
- Struts2对于国际化(i18n)的支持
- JAVA问题总结之27--创建100个文件
- Spring单例模式与线程安全
- 原创:Spring整合junit测试框架(简易教程 基于myeclipse,不需要麻烦的导包)
- java-多个数的和
- Java命名规范
- [置顶] Spring中的AOP
- java中Math之random,round,ceil,floor的用法总结
- struts2中各个jar包作用
- java assert的使用并深入解析Java的assertion
- Java学习笔记【数组知识要点】
- Spring中的DI(依赖注入)--给对象的属性赋值
- Spring中注解的使用
- Spring中关于bean的继承