java生成二维码保存本地路径

java生成二维码保存本地路径

导入依赖

		<dependency>
			<groupId>com.google.zxinggroupId>
			<artifactId>coreartifactId>
			<version>3.3.0version>
		dependency>
		<dependency>
			<groupId>com.google.zxinggroupId>
			<artifactId>javaseartifactId>
			<version>3.3.0version>
		dependency>

编写工具类CodeImageUtil

import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

public class CodeImageUtil {
	// 默认二维码宽度
	public static final int WIDTH = 300;
	// 默认二维码高度
	public static final int HEIGHT = 300;
	// 默认二维码文件格式
	public static final String FORMAT = "png";
	// 二维码参数
	public static final Map<EncodeHintType, Object> HINTS = new HashMap<EncodeHintType, Object>();
	// 初始化编码格式等参数
	static {
		// 字符编码
		HINTS.put(EncodeHintType.CHARACTER_SET, "utf-8");
		// 纠错的等级 L > M > Q > H 纠错的能力越高可存储的越少,一般使用M
		HINTS.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
		// 二维码与图片边距
		HINTS.put(EncodeHintType.MARGIN, 2);
	}

	/**
	 * 
	 * @description:功能描述 将二维码写出到输出流中
	 * @param content 二维码内容即要存储在二维码中的内容(扫描二维码之后获取的内容)
	 * @param stream  输出流
	 * @param width   二维码宽
	 * @param height  二维码高
	 * @throws WriterException
	 * @throws IOException     @see: 需要参见的其它内容
	 */
	public static void writeToStream(String content, OutputStream stream, Integer width, Integer height)
			throws WriterException, IOException {
		if (width == null) {
			width = WIDTH;
		}
		if (height == null) {
			height = HEIGHT;
		}
		BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, HINTS);
		MatrixToImageWriter.writeToStream(bitMatrix, FORMAT, stream);
	}
}

测试

public class test {
	public static void main(String[] args) {
		// 生成二维码
		String url = "https://www.baidu.com/";
		String fileName = "二维码.png";
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		// 生成二维码图片
		try {
			CodeImageUtil.writeToStream(url, out, 300, 300);
			InputStream in = new ByteArrayInputStream(out.toByteArray());
			// 将生成的二维码写入图片,也可直接使用流
			String filePath = "C:\\aaa\\" + fileName;
			FileOutputStream fos = new FileOutputStream(filePath);
			int length;
			byte[] b = new byte[1024];
			while ((length = in.read(b)) > 0) {
				fos.write(b, 0, length);
			}
			fos.flush();
			in.close();
			fos.close();
		} catch (WriterException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	System.out.println("success");
	}
}

你可能感兴趣的:(#,java-常用工具类,java)