QrCode生成二维码

xiaoxiao2021-02-28  77

QrCode.jar包下载 package com.aoleisite.cn.qrcode.casee; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import com.swetake.util.Qrcode; /** * 生成带logo的二维码 * @author admin * */ public class TestQrCode { /** * 测试 * @param args */ public static void main(String[] args) { String content = "ceshiceshi "; String imagePath = "I:\\QRCodeTest\\luooluo.jpg"; String logoPath = "C:/Users/admin/Desktop/zhanghmFile/images/IMG_0159.JPG"; qrCodeUtil(content,imagePath,logoPath,11); } /** * 生成二维码(QRCode)图片 * @param content 二维码图片的内容 * @param imagePath生成二维码图片完整的路径 * @param logoPath 二维码图片中间的logo路径 * @param version二维码size */ public static void qrCodeUtil(String content,String imagePath,String logoPath,Integer version){ //设置二维码的宽高 /*int width=240; int height=240;*/ /*int width=67 + 12*(version-1); int height=67+12*(version-1);*/ try { //创建对象 Qrcode qrCode = new Qrcode(); //设置:容错率(7% L、15%M、25%Q、30%H)说明:容错率越高。存储数据越有限 qrCode.setQrcodeErrorCorrect('M'); //设置版本号 -40 共40个版本(1 -->21x21模块;40 -->177x177模块) qrCode.setQrcodeVersion(version); //设置参数模型:N代表数字、A代表a-Z、B代表其他字节 qrCode.setQrcodeEncodeMode('B'); int imageSize = 67+12*(version-1); //将字符串打散成字节数组,并设置编码格式 byte[] b = content.getBytes("UTF-8"); System.out.println(b.length); //创建画板:java自带的类 BufferedImage bImage = new BufferedImage(imageSize, imageSize, BufferedImage.TYPE_INT_RGB); //根据画板拿画笔 Graphics2D gs = bImage.createGraphics(); gs.setBackground(Color.white);//设置二维码的背景色为白色 gs.clearRect(0, 0, imageSize, imageSize);//清除杂色 gs.setColor(Color.black);//设置画笔(图像)的颜色:一般为黑色 int off = 2;//设置偏移量 //输出内容》二维码 if(b.length>0 && b.length<250){ //将一维字节数组转化为二维,并限制最大字节数为119,印version为7 boolean[][] codeOut = qrCode.calQrcode(b); for(int i=0;i bImage.getWidth()*2/10?bImage.getWidth()*2/10:imLogo.getWidth(null); int logoHeight = imLogo.getHeight(null)>bImage.getHeight()*2/10?bImage.getHeight()*2/10:imLogo.getHeight(null); /** * logo放在二维码中心 */ int x = (bImage.getWidth()-logoWidth)/2; int y = (bImage.getHeight()-logoHeight)/2; gs.drawImage(imLogo, x, y, logoWidth, logoHeight, null); //资源释放 gs.dispose(); //画板的内容的清空 bImage.flush(); //文件位置:"I:\\QRCodeTest\\张华明.jpg" File file = new File(imagePath); if(!file.exists()){ file.createNewFile(); //写入磁盘文件,生成二维码code图片 ImageIO.write(bImage, "PNG", file); } } catch (Exception e) { System.err.print("生成二维码IOException"); e.printStackTrace(); } } }
转载请注明原文地址: https://www.6miu.com/read-47950.html

最新回复(0)