zoukankan      html  css  js  c++  java
  • Google开发的QRcode二维码生成和解码及最大容量

    1.源码

    package com.test;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.nio.ByteBuffer;
    import java.nio.CharBuffer;
    import java.nio.charset.CharacterCodingException;
    import java.nio.charset.Charset;
    import java.nio.charset.CharsetEncoder;
    import java.util.Hashtable;
    import javax.imageio.ImageIO;
    import com.google.zxing.BinaryBitmap;
    import com.google.zxing.DecodeHintType;
    import com.google.zxing.LuminanceSource;
    import com.google.zxing.MultiFormatReader;
    import com.google.zxing.Result;
    import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
    import com.google.zxing.client.j2se.MatrixToImageWriter;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.common.HybridBinarizer;
    import com.google.zxing.qrcode.QRCodeWriter;
    
    public class main {
    	public static void main(String[] args) {
    		String filePath = "d:/qr_png.png";
    		String str = "";
    		/*
    		for (int i = 0; i < 2685; i++) {
    			str += 1;
    		}
    		*/
    	
    		for (int i = 0; i < 635; i++) {
    			str += "赵";
    		}
    			
    		encode(str, filePath);
    		decode(filePath);
    	}
    
    	// qrcode 编码
    	static void encode(String conent, String filePath) {
    		Charset charset = Charset.forName("UTF-8");
    		CharsetEncoder encoder = charset.newEncoder();
    		byte[] b = null;
    		try { // Convert a string to ISO-8859-1 bytes in a ByteBuffer
    			System.out.println("-------->" + conent.length());
    			ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(conent));
    			b = bbuf.array();
    		} catch (CharacterCodingException e) {
    			System.out.println(e.getMessage());
    		}
    		String data = "";
    		try {
    			data = new String(b, "iso8859-1");
    		} catch (UnsupportedEncodingException e) {
    			System.out.println(e.getMessage());
    		} // get a byte matrix for the data
    		BitMatrix matrix = null;
    		int h = 900;
    		int w = 800;
    		com.google.zxing.Writer writer = new QRCodeWriter();
    		try {
    			matrix = writer.encode(data,
    					com.google.zxing.BarcodeFormat.QR_CODE, w, h);
    		} catch (com.google.zxing.WriterException e) {
    			System.out.println(e.getMessage());
    		}
    		File file = new File(filePath);
    		try {
    			MatrixToImageWriter.writeToFile(matrix, "PNG", file);
    			System.out.println("printing to " + file.getAbsolutePath());
    		} catch (IOException e) {
    			System.out.println(e.getMessage());
    		}
    	}
    
    	// qrcode 解码
    	static void decode(String file) {
    		try {
    			Result result = null;
    			BufferedImage image = null;
    			image = ImageIO.read(new File(file));
    			LuminanceSource source = new BufferedImageLuminanceSource(image);
    			BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
    			Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
    			hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
    			result = new MultiFormatReader().decode(bitmap, hints);
    			String rtn = result.getText();
    			System.out.println(rtn);
    			System.out.println(rtn.length());
    		} catch (Exception ex) {
    			System.out.println(ex.toString());
    		}
    	}
    }
    

    2.最多2685个字母635个汉字

    635个汉字


    2685个字母


  • 相关阅读:
    linux软件安装方式
    docker 安装 jenkins touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    [ERR] Node goodsleep.vip:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
    Linux 常用命令 服务器间scp 用户 export 创建文件、软连接
    redis 安装 集群 主从 哨兵 docker
    WPF密码框中禁止复制、粘贴
    Application 统计在线人数
    【转义字符】HTML 字符实体&lt; &gt: &amp;等
    SQL语句统计每天的数据
    正则表达式计算代码数
  • 原文地址:https://www.cnblogs.com/whzhaochao/p/5023452.html
Copyright © 2011-2022 走看看