Java Zxing生成二维码与解析
来源:互联网 发布:mac移动硬盘写入软件 编辑:程序博客网 时间:2024/06/05 15:10
代码与jar包下载 提取码:edvu
package code;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;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.Binarizer;import com.google.zxing.BinaryBitmap;import com.google.zxing.DecodeHintType;import com.google.zxing.EncodeHintType;import com.google.zxing.LuminanceSource;import com.google.zxing.MultiFormatReader;import com.google.zxing.MultiFormatWriter;import com.google.zxing.Result;import com.google.zxing.client.j2se.BufferedImageLuminanceSource;import com.google.zxing.common.BitMatrix;import com.google.zxing.common.HybridBinarizer;public class Zxing { private static final int BLACK = 0xff000000; private static final int WHITE = 0xFFFFFFFF; public static void main(String[] args) { //2.最多2685个字母635个汉字超过则报错 Zxing test = new Zxing(); String filePostfix="png"; String content="https://www.baidu.com?name=郭云飞"; try { content =new String(content.getBytes("UTF-8"),"ISO-8859-1"); } catch (Exception e) { e.printStackTrace(); } File file = new File("E:/code/"+System.currentTimeMillis()+"."+filePostfix); test.encode(content,file,filePostfix,BarcodeFormat.QR_CODE,64+12*(51-1),64+12*(51-1),null); test.decodeQr("E:\\code\\1502524946182.png"); } /** * 生成QRCode二维码<br> * 在编码时需要将com.google.zxing.qrcode.encoder.Encoder.java中的<br> * static final String DEFAULT_BYTE_MODE_ENCODING = "ISO8859-1";<br> * 修改为UTF-8,否则中文编译后解析不了<br> * @param contents 二维码的内容 * @param file 二维码保存的路径,如:C://test_QR_CODE.png * @param filePostfix 生成二维码图片的格式:png,jpeg,gif等格式 * @param format qrcode码的生成格式 * @param width 图片宽度 * @param height 图片高度 * @param hints */ public void encode(String contents, File file,String filePostfix, BarcodeFormat format, int width, int height, Map<EncodeHintType, ?> hints) { try { BitMatrix bitMatrix = new MultiFormatWriter().encode(contents, format, width, height); writeToFile(bitMatrix, filePostfix, file); } catch (Exception e) { e.printStackTrace(); } } /** * 生成二维码图片<br> * * @param matrix * @param format * 图片格式 * @param file * 生成二维码图片位置 * @throws IOException */ public static void writeToFile(BitMatrix matrix, String format, File file) throws IOException { BufferedImage image = toBufferedImage(matrix); ImageIO.write(image, format, file); } /** * 生成二维码内容<br> * * @param matrix * @return */ public static BufferedImage toBufferedImage(BitMatrix 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) == true ? BLACK : WHITE); } } return image; } /** * 二维码解析 * @param filePath * @return */ public static String decodeQr(String filePath) { String retStr = ""; if ("".equalsIgnoreCase(filePath) && filePath.length() == 0) { return "图片路径为空!"; } try { BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filePath)); LuminanceSource source = new BufferedImageLuminanceSource(bufferedImage); Binarizer binarizer = new HybridBinarizer(source); BinaryBitmap bitmap = new BinaryBitmap(binarizer); HashMap<DecodeHintType, Object> hintTypeObjectHashMap = new HashMap<DecodeHintType,Object>(); hintTypeObjectHashMap.put(DecodeHintType.CHARACTER_SET, "UTF-8"); Result result = new MultiFormatReader().decode(bitmap, hintTypeObjectHashMap); retStr = result.getText(); System.out.println("解析完成:"+retStr); } catch (Exception e) { e.printStackTrace(); } return retStr; }}
阅读全文
1 0
- Java Zxing生成二维码与解析
- zxing 二维码生成与解析
- Google Zxing 二维码生成与解析
- 利用google Zxing 二维码生成与解析
- ZXing实现二维码的生成与解析
- Google Zxing 二维码生成与解析
- Google Zxing 二维码生成与解析
- zxing实现生成二维码与解析
- zxing 二维码的生成与解析
- 使用zxing生成与解析二维码
- 使用zxing生成与解析qr二维码
- Java利用zxing生成/解析二维码
- zxing二维码的生成与解码(java)
- zxing二维码的生成与解码(java)
- Zxing生成二维码经典解析
- ZXING生成二维码以及解析
- Android学习之 google Zxing 二维码条形码生成与解析
- 基于zxing的彩色二维码生成与解析
- 异步消息队列
- jquery dataTable 参数详解
- Redis的下载安装
- 判断给定森林中有多少棵树特别版
- 南理 108 士兵杀敌(一)
- Java Zxing生成二维码与解析
- 快速扫描局域网主机的方式
- 为什么学习linux?
- opencv SVM
- px,em,rem区别
- According to Bartjens UVA
- bootstrap btn 按钮颜色
- 机器学习
- WKWebView 那些坑