/** * <p>Title: QRCodeUtil.java</p> * <p>Description: </p> * @author dsc * @date 2020年4月28日 * @version 1.0 */ package cn.timer.api.utils.QRCode; import java.awt.image.BufferedImage; import java.io.File; import java.util.Hashtable; import javax.imageio.ImageIO; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;; /** * <p> * Title: QRCodeUtil.java * </p> * <p> * Description: * </p> * * @author dsc * @date 2020年4月28日 * @version 1.0 */ public class ZXingUtil { /** * @param imgPath 保存路径 * @param format 图片格式 * @param content 保存内容 * @param width 宽 * @param height 高 * @param logo logo图片路径 * @throws Exception */ public static void encodeImg(String imgPath, String format, String content, int width, int height, String logo) throws Exception { Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>(); // 排错率 L<M<Q<H hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 编码 hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 外边距:margin hints.put(EncodeHintType.MARGIN, 1); /* * content : 需要加密的 文字 BarcodeFormat.QR_CODE:要解析的类型(二维码) hints:加密涉及的一些参数:编码、排错率 */ BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints); // 内存中的一张图片:此时需要的图片 是二维码-> 需要一个boolean[][] ->BitMatrix 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, (bitMatrix.get(x, y) ? 0 : 16777215)); // TODO } } // 画logo image = LogoUtil.logoMatrix(image, logo); // string->file File file = new File(imgPath); // 生成图片 ImageIO.write(image, format, file); } /* * public static void main(String[] args) { String imgPath = * "C:\\Users\\Lenovo\\Desktop\\8timer.png"; String content = "8timer.cn"; * String logo = "C:\\Users\\Lenovo\\Pictures\\Saved Pictures\\生气.jpg"; // * 加密:文字信息->二维码 try { ZXingUtil.encodeImg(imgPath, "png", content, 430, 430, * logo); } catch (Exception e) { e.printStackTrace(); } } */ }