前言:
当前小伙伴们对“java二维码制作”大概比较讲究,姐妹们都想要了解一些“java二维码制作”的相关内容。那么小编同时在网络上汇集了一些对于“java二维码制作””的相关资讯,希望我们能喜欢,各位老铁们快快来学习一下吧!下载QRCode.jar包
下载完成后在cmd命令行执行以下命令
mvn install:install-file -Dfile = QRCode的路径 -DgroupId=QRCode -DartifactId=QRCode -Dversion=3.0 -Dpackaging=jar
注意: 需要配置maven环境变量
在pom.xml文件里添加jar包
<dependency> <groupId>QRCode</groupId> <artifactId>QRCode</artifactId> <version>3.0</version></dependency>
运行类
package test;public class Test { public static void main(String[] args) throws Exception { // 生成后的二维码存放的路径 String imgPath = "D://二维码.png"; // 二维码的内容 String content = "hello world"; // 跳转网页// String content = ";; /** * 生成二维码 */ QRCodeUtil qrCodeUtil = new QRCodeUtil(); qrCodeUtil.encoderQRCode(content, imgPath, "png", 17); /** * 解码二维码 */ String imgContent = qrCodeUtil.decodeQrCode(imgPath); System.out.println("imgContent:" + imgContent); }}
生成二维码的方法
public void encoderQRCode(String content, String imgPath, String imgType, int size) { File file = new File(imgPath); BufferedImage bufImg = qrCodeCommon(content, imgType, size); try { ImageIO.write(bufImg, imgType, file); } catch (Exception e) { e.printStackTrace(); } } /** * 生成一个二维码的BufferedImage * * @param content * 内容 * @param imgType * 类型 * @param size * 二维码边长 * @return */ public BufferedImage qrCodeCommon(String content, String imgType, int size) { // BufferedImage.TYPE_INT_ARGB:RGB三基色 BufferedImage bufImg = null; Qrcode qrcode = new Qrcode(); // 设置二维码的拍错率 qrcode.setQrcodeErrorCorrect('M'); // 可存放的信息 qrcode.setQrcodeEncodeMode('B'); // 尺寸:取值范围:1-40 qrcode.setQrcodeVersion(size); byte[] bytes = null; try { bytes = content.getBytes("utf-8"); } catch (Exception e) { e.printStackTrace(); } // 将内容转换成字节数组 boolean[][] codeOut = qrcode.calQrcode(bytes); int imgSize = 67 + 12 * (size - 1); // BufferedImage:内存中的图片 bufImg = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_ARGB); // 创建一个画板 Graphics2D gs = bufImg.createGraphics(); // 设置二维码背景颜色:一般为白色 gs.setBackground(Color.WHITE); // 初始化,x和y为0代表左上角,size一样代表是个正方形 gs.clearRect(0, 0, imgSize, imgSize); // 设置二维码颜色:一般为黑色 gs.setColor(Color.BLACK); for (int i = 0; i < codeOut.length; i++) { for (int j = 0; j < codeOut.length; j++) { if (codeOut[i][j]) { gs.fillRect(j * 3, i * 3, 3, 3); } } } // 给二维码中间增加logo try { // logo路径 File file = new File("D://jieZai.jpg"); // 加载一个Image对象 Image logo = ImageIO.read(file); int width = bufImg.getWidth(); int height = bufImg.getHeight(); // 在已生成的二维码上画logo gs.drawImage(logo, imgSize / 5 * 2, imgSize / 5 * 2, width / 5, height / 5, null); } catch (Exception e) { e.printStackTrace(); } gs.dispose(); // 释放空间 bufImg.flush(); // 刷新 return bufImg; }
解码的方法
/*** 解码* * @param imgPath 图片路径* @return*/public String decodeQrCode(String qrImg) { File file = new File(qrImg); Result result = null; if (!qrImg.isEmpty()) { try { // BufferedImage内存中的图片 BufferedImage image = ImageIO.read(file); BinaryBitmap binaryBitmap = new BinaryBitmap( new HybridBinarizer(new BufferedImageLuminanceSource(image))); // 定义二维码的参数: HashMap<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>(); // 定义字符集 hints.put(DecodeHintType.CHARACTER_SET, "utf-8"); // 解密 result = new MultiFormatReader().decode(binaryBitmap, hints); } catch (Exception e) { e.printStackTrace(); } } return result.getText();}
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java二维码制作 #java解析图片二维码demo