• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Java生成二维码的实例代码

java 搞代码 4年前 (2022-01-05) 16次浏览 已收录 0个评论

这篇文章主要介绍了Java生成二维码的实例代码,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下

使用开源的一维/二维码图形处理库zxing GitHub地址

引入依赖

 <!-- https://mvnrepository.com/artifact/com.google.zxing/core --> com.google.zxingcore3.3.0<!-- https://mvnrepository.com/artifact/com.google.zxing/javase --> com.google.zxingjavase3.3.0

封装工具类

 package com.app.utils; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.imageio.ImageIO; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.client.j2se.MatrixToImageConfig; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; /** * @title 生成二维码工具类 * @author zch * @discribtion * @Date 2020年1月3日 下午4:26:05 * @vision V1.0 */ public class QRCodeUtil { private static final int width = 200; // 图像宽度 private static final int height = 200; // 图像高度 private static final int ON_COLOR = 0xFF000001; private static final int OFF_COLOR = 0xFFFFFFFF; /** * @title 生成二维码图片 * @discribtion * @author zch * @Date 2020年1月3日 下午3:27:21 * @param width 二维码宽度,默认为200 * @param height 二维码高度,默认为200 * @param content 二维码内容,必填 * @param logoPath logo图片路径,若为空则生成不带logo的二维码 * @param imgPath 生成二维码文件夹路径 * @param imgName 生成二维码图片名称,必填 * @param suffix 生成二维码图片后缀类型,例如:gif,必填 * @vision V1.0 */ public static boolean generateQRImage(Integer width, Integer height, String content, String logoPath, String imgPath, String imgName, String suffix) { if (content == null || imgName == null || suffix == null) { return false; } try { width = width == null ? QRCodeUtil.width : width; height = height == null ? QRCodeUtil.height : height; if (logoPath != null && !"".equals(logoPath.trim())) { QREncode(width, height, content, logoPath, imgPath, imgName, suffix); } else { QREncode(width, height, content, imgPath, imgName, suffix); } return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * @title 生成二维码 * @discribtion * @author zch * @Date 2020年1月3日 下午3:27:21 * @vision V1.0 */ private static void QREncode(int width, int height, String content, String imgPath, String imgName, String suffix) throws Exception { File filePath = new File(imgPath); if (!filePath.exists()) { filePath.mkdirs(); } File imageFile = new File(imgPath, imgName); Map hints = new HashMap(); // 内容编码格式 hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 指定纠错等级 hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 设置二维码边的空度,非负数 hints.put(EncodeHintType.MARGIN, 1); BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints); MatrixToImageWriter.writeToPath(bitMatrix, suffix, imageFile.toPath());// 输出原图片 } /** * @title 生成带logo的二维码 * @discribtion * @author zch * @Date 2020年1月3日 下午3:27:21 * @vision V1.0 */ private static void QREncode(int width, int height, String content, String logoPath, String imgPath, String imgName, String suffix) throws Exception { File filePath = new File(imgPath); if (!filePath.exists()) { filePath.mkdirs(); } File imageFile = new File(imgPath, imgName); Map hints = new HashMap(); // 内容编码格式 hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 指定纠错等级 hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 设置二维码边的空度,非负数 hints.put(EncodeHintType.MARGIN, 1); BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints); MatrixToImageConfig matrixToImageConfig = new MatrixToImageConfig(ON_COLOR, OFF_COLOR); BufferedImage bufferedImage = LogoMatrix(MatrixToImageWriter.toBufferedImage(bitMatrix, matrixToImageConfig), new File(logoPath)); ImageIO.write(bufferedImage<i style="color:transparent">来源gaodai$ma#com搞$$代**码)网</i>, suffix, imageFile);// 输出带logo图片 } /** * @title 二维码图片添加logo * @discribtion * @author zch * @Date 2020年1月3日 下午3:27:21 * @param matrixImage 源二维码图片 * @param logoFile logo图片 * @vision V1.0 */ private static BufferedImage LogoMatrix(BufferedImage matrixImage, File logoFile) throws IOException { // 读取二维码图片,并构建绘图对象 Graphics2D gs = matrixImage.createGraphics(); int matrixWidth = matrixImage.getWidth(); int matrixHeigh = matrixImage.getHeight(); int ratioWidth = matrixWidth * 2 / 10; int ratioHeight = matrixHeigh * 2 / 10; // 读取Logo图片 BufferedImage logo = ImageIO.read(logoFile); int logoWidth = logo.getWidth(null) > ratioWidth ? ratioWidth : logo.getWidth(null); int logoHeight = logo.getHeight(null) > ratioHeight ? ratioHeight : logo.getHeight(null); int x = (matrixWidth - logoWidth) / 2; int y = (matrixHeigh - logoHeight) / 2; // 绘制 gs.drawImage(logo, x, y, logoWidth, logoHeight, null); gs.setColor(Color.BLACK); gs.setBackground(Color.WHITE); gs.dispose(); matrixImage.flush(); return matrixImage; } }

测试生成二维码

 QRCodeUtil.generateQRImage(null, null, "https://blog.gaodaima.com/qq_34928194", null, "E:/", "test.gif", "gif");

以上就是Java生成二维码的实例代码的详细内容,更多关于Java生成二维码的资料请关注gaodaima搞代码网其它相关文章!

以上就是Java生成二维码的实例代码的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Java生成二维码的实例代码
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址