Java生成二维码(案例源码)
程序员文章站
2022-06-17 13:27:15
...
index.jsp代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>生成二维码</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <script type="text/javascript"> function check() { var content = document.getElementById("content").value; if (content.length == 0 || content.length - 80 > 0) { alert("请输入1-80长度内容,当前长度:" + content.length); return false; } document.getElementById("createEwmForm").submit(); return true; } </script> <body> <div align="center"> <form method="post" id="createEwmForm" action="qrcode_getQRcodeImg.action"> <textarea rows="5" cols="30" name="content" id="content"></textarea> <p> <input type="button" onclick="check()" name="ewmCreate" id="ewmCreate" value="生成二维码" /> </form> <img alt="二维码" src="img/ewm.png"> </div> </body> </html>
struts.xml代码
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="qrcode" extends="struts-default"> <action name="qrcode_*" class="com.singlee.action.QRcodeAction" method="{1}"> <result name="ok">/index.jsp </result> <result name="no">/error.jsp </result> </action> </package> </struts>
CreateEwm.java代码
package com.singlee.util; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import com.swetake.util.Qrcode; /** * * @author mingzl * @function 生成二维码 * */ public class CreateEwm { /** * 生成二维码(QRCode)图片的公共方法 * * @param content * 存储内容 * @param size * 二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大 * @return */ public BufferedImage qrCodeCommon(String content, int size) { BufferedImage bufImg = null; try { Qrcode qrcodeHandler = new Qrcode(); // 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小 qrcodeHandler.setQrcodeErrorCorrect('M'); qrcodeHandler.setQrcodeEncodeMode('B'); // 设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大 qrcodeHandler.setQrcodeVersion(size); // 获得内容的字节数组,设置编码格式 byte[] contentBytes = content.getBytes("utf-8"); // 图片尺寸 int imgSize = 67 + 12 * (size - 1); bufImg = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB); Graphics2D gs = bufImg.createGraphics(); // 设置背景颜色:白色 gs.setBackground(Color.WHITE); gs.clearRect(0, 0, imgSize, imgSize); // 设定图像颜色:黑色 gs.setColor(Color.BLACK); // 设置偏移量 int pixoff = 2; // 输出内容:二维码 if (contentBytes.length > 0 && contentBytes.length < 800) { boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes); for (int i = 0; i < codeOut.length; i++) { for (int j = 0; j < codeOut.length; j++) { if (codeOut[j][i]) { gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3); } } } } else { throw new Exception("QRCode content bytes length = " + contentBytes.length + " not in [0, 800]."); } gs.dispose(); bufImg.flush(); } catch (Exception e) { e.printStackTrace(); } return bufImg; } }
QRcodeAction代码
package com.singlee.action; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import com.opensymphony.xwork2.ActionSupport; import com.singlee.util.CreateEwm; public class QRcodeAction extends ActionSupport { private static final long serialVersionUID = 1L; private String content; public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getQRcodeImg() { CreateEwm ce = new CreateEwm(); int size = (content.getBytes().length - 1) / 20; if (size >= 40) { return "no"; } size = size < 5 ? 5 : size; BufferedImage bi = ce.qrCodeCommon(content, size); try { String upPath = this.getClass().getClassLoader().getResource("") .getPath().replace("WEB-INF/classes", "img"); ImageIO.write(bi, "png", new File(upPath + "/ewm.png")); } catch (IOException e) { e.printStackTrace(); return "no"; } return "ok"; } }
上一篇: mule的Servlet组件将request body放到message的payload中 mulepayloadrequest body
下一篇: dos命令大全 黑客必知的DOS命令集合
推荐阅读
-
建议收藏备用:.net core使用QRCoder生成普通二维码和带Logo的二维码详细使用教程,源码已更新至开源模板
-
通过java生成读取二维码详解
-
java实现批量生成二维码
-
java Springboot 生成 二维码 +logo
-
java 后端生成pdf模板合并单元格表格的案例
-
java 快速开发框架平台 二次开发 代码生成器 springmvc SSM后台框架源码
-
Java开源生鲜电商平台-一次代码重构的实战案例(源码可下载)
-
Java 生成微信小程序二维码并写入本地(经过反复测试可用)
-
PHP生成二维码与识别二维码的方法详解【附源码下载】
-
java后台生成并下载二维码(以二进制流的形式输出)