zoukankan      html  css  js  c++  java
  • java 通过zxing生成二维码

    1.基本类提供二维码生成工具类

    package com.green.util;
    
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.IOException;
    import java.io.OutputStream;
    
    import javax.imageio.ImageIO;
    
    import com.google.zxing.common.BitMatrix;
    
    public final class MatrixToImageWriter {
    
    	private static final int BLACK = 0xFF000000;
    	private static final int WHITE = 0xFFFFFFFF;
    
    	private MatrixToImageWriter() {
    	}
    
    	public static BufferedImage toBufferedImage(BitMatrix matrix) {
    		int width = matrix.getWidth();
    		int height = matrix.getHeight();
    		BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    		for (int x = 0; x < width; x++) {
    			for (int y = 0; y < height; y++) {
    				image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);
    			}
    		}
    		return image;
    	}
    
    	public static void writeToFile(BitMatrix matrix, String format, File file) throws IOException {
    		BufferedImage image = toBufferedImage(matrix);
    		if (!ImageIO.write(image, format, file)) {
    			throw new IOException("Could not write an image of format " + format + " to " + file);
    		}
    	}
    
    	public static byte[] writeToStream(BitMatrix matrix, String format) throws IOException {
    		ByteArrayOutputStream stream=new ByteArrayOutputStream();
    		BufferedImage image = toBufferedImage(matrix);
    	
    		if (!ImageIO.write(image, format, stream)) {
    			throw new IOException("Could not write an image of format " + format);
    		}
    	
    		return stream.toByteArray();
    	}
    
    }
    

      2.调用工具方法获取图片的二进制

    package com.green.util;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.Hashtable;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.WriterException;
    import com.google.zxing.common.BitMatrix;
    
    /**
     * @author maybo
     *
     */
    public class QrCodeGenerator {
    	public static byte[] build(String content) throws IOException, WriterException {
    	        int width = 300; 
    	        int height = 300; 
    	        //��ά���ͼƬ��ʽ 
    	        String format = "gif"; 
    	        Hashtable hints = new Hashtable(); 
    	        //������ʹ�ñ��� 
    	        hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); 
    	        BitMatrix bitMatrix = new MultiFormatWriter().encode(content, 
    	                BarcodeFormat.QR_CODE, width, height, hints); 
    	       return MatrixToImageWriter.writeToStream(bitMatrix, format);
    	}
    }
    

      

  • 相关阅读:
    不重复随机数生成
    centos 输入密码正确进不去系统
    程序退出异常_DebugHeapDelete和std::numpunct
    iptables导致数据包过多时连接失败
    linux服务器并发与tcmalloc
    Windows server 2008 被ntlmssp安装攻击 解决
    转载 html div三列布局占满全屏(左右两列定宽或者百分比、中间自动适应,div在父div中居底)
    WIN2003使用IP安全策略只允许指定IP远程桌面连接
    如何让电脑公司Win7系统自动关闭停止响应的程序
    win7 64的系统安装。net4.0总是提示安装未成功
  • 原文地址:https://www.cnblogs.com/maybo/p/5183740.html
Copyright © 2011-2022 走看看