生成二维码(带背景)本地测试方法
public class QRCodeMax { //文字显示 private static final int QRCOLOR = 0x201f1f; // 二维码颜色:黑色 private static final int BGWHITE = 0xFFFFFF; //二维码背景颜色:白色 // 设置QR二维码参数信息 private static Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>() { private static final long serialVersionUID = 1L; { put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);// 设置QR二维码的纠错级别(H为最高级别) put(EncodeHintType.CHARACTER_SET, "utf-8");// 设置编码方式 put(EncodeHintType.MARGIN, 0);// 白边 } }; /** * 生成二维码图片+背景+文字描述 * * @param fileName 生成图片的名称 * @param bgImgFile 背景图地址 * @param WIDTH 二维码宽度 * @param HEIGHT 二维码高度 * @param qrUrl 二维码识别地址 * @param imagesX 二维码x轴方向 * @param imagesY 二维码y轴方向 */ public static void CreatQRCode(File fileName, File bgImgFile, Integer WIDTH, Integer HEIGHT, String qrUrl, Integer imagesX, Integer imagesY) { try { MultiFormatWriter multiFormatWriter = new MultiFormatWriter(); // 参数顺序分别为: 编码内容,编码类型,生成图片宽度,生成图片高度,设置参数 BitMatrix bm = multiFormatWriter.encode(qrUrl, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints); BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); // 开始利用二维码数据创建Bitmap图片,分别设为黑(0xFFFFFFFF) 白(0xFF000000)两色 for (int x = 0; x < WIDTH; x++) { for (int y = 0; y < HEIGHT; y++) { image.setRGB(x, y, bm.get(x, y) ? QRCOLOR : BGWHITE); } } /* * 添加背景图片 */ BufferedImage backgroundImage = ImageIO.read(bgImgFile); int bgWidth = backgroundImage.getWidth(); int qrWidth = image.getWidth(); //距离背景图片x边的距离,居中显示 int disx = (bgWidth - qrWidth) - imagesX; //距离y边距离 * * * * int disy = imagesY; Graphics2D rng = backgroundImage.createGraphics(); rng.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP)); rng.drawImage(image, disx, disy, WIDTH, HEIGHT, null); rng.dispose(); image = backgroundImage; image.flush(); ImageIO.write(image, "png", fileName); } catch (Exception e) { e.printStackTrace(); } } /** * 测试 * * @param args */ public static void main(String[] args) { File bgImgFile = new File("D:/nums-project/industry/bud/operation/src/main/resources/static/t.jpg");//背景图片 File QrCodeFile = new File("D:/data/img/6.jpg");//生成图片位置 String url = "https://blog.csdn.net/weixin_38407595";//二维码链接 String note = "";//文字描述 String tui = "";//文字描述 //宣传二维码生成 //生成图地址,背景图地址,二维码宽度,二维码高度,二维码识别地址,文字描述1,文字描述2,文字大小,图片x轴方向,图片y轴方向,文字1||2xy轴方向 CreatQRCode(QrCodeFile, bgImgFile, 200, 200, url, 308, 123); } }
上面的方法,用来进行本地生成带二维码的测试方法