• 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);
    	}
    }
    

      

  • 相关阅读:
    sqlserver调优-索引
    浮点数的这些坑,你未必知道-深入理解浮点数的规律
    生产环境部署springcloud微服务启动慢的问题排查
    redis传输协议规范-下(Redis Protocol specification)
    一步步完成“迷你版” 的ASP.NET Core框架
    安全漏洞整改系列(一)
    docker实战(二)之redis的使用
    docker实战(一)之Tomcat的安装
    docker安装步骤
    WPF后台操作前台元素之查找对象
  • 原文地址:https://www.cnblogs.com/maybo/p/5183740.html
Copyright © 2020-2023  润新知