1、支持QRcode、ZXing 二維碼生成、解析;
package com.thinkgem.jeesite.test; 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; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; /** * 二維碼生成工具類 * @author Cloud * @data 2016-12-15 * QRCode */ public class QRCodeUtil{ //二維碼顏色 private static final int BLACK = 0xFF000000; //二維碼顏色 private static final int WHITE = 0xFFFFFFFF; /** * <span style="font-size:18px;font-weight:blod;">ZXing 方式生成二維碼</span> * @param text <a href="javascript:void();">二維碼內容</a> * @param width 二維碼寬 * @param height 二維碼高 * @param outPutPath 二維碼生成保存路徑 * @param imageType 二維碼生成格式 */ public static void zxingCodeCreate(String text, int width, int height, String outPutPath, String imageType){ Map<EncodeHintType, String> his = new HashMap<EncodeHintType, String>(); //設置編碼字符集 his.put(EncodeHintType.CHARACTER_SET, "utf-8"); try { //1、生成二維碼 BitMatrix encode = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, his); //2、獲取二維碼寬高 int codeWidth = encode.getWidth(); int codeHeight = encode.getHeight(); //3、將二維碼放入緩沖流 BufferedImage image = new BufferedImage(codeWidth, codeHeight, BufferedImage.TYPE_INT_RGB); for (int i = 0; i < codeWidth; i++) { for (int j = 0; j < codeHeight; j++) { //4、循環將二維碼內容定入圖片 image.setRGB(i, j, encode.get(i, j) ? BLACK : WHITE); } } File outPutImage = new File(outPutPath); //如果圖片不存在創建圖片 if(!outPutImage.exists()) outPutImage.createNewFile(); //5、將二維碼寫入圖片 ImageIO.write(image, imageType, outPutImage); } catch (WriterException e) { e.printStackTrace(); System.out.println("二維碼生成失敗"); } catch (IOException e) { e.printStackTrace(); System.out.println("生成二維碼圖片失敗"); } } public static void main(String[] args) throws Exception { // QRcode 二維碼生成測試 QRCodeUtil.zxingCodeCreate("祝小仙女節日快樂",300, 300, "E:/borths.jpg", "jpg");
QRCodeUtil.zxingCodeCreate("https://www.cnblogs.com/zhukaixin/",300, 300, "E:/borths.jpg", "jpg");
System.out.println("success"); } }
二維碼圖片: