`
明子健
  • 浏览: 576575 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java生成二维码(案例源码)

    博客分类:
  • Java
阅读更多

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";
	}
}

 

 

Java生成二维码案例下载

 

  • CreateQRCode.zip (4.2 MB)
  • 描述: Java生成二维码项目案例
  • 下载次数: 39
分享到:
评论

相关推荐

    java生成二维码源码案例及jar包

    本资源包含了一个使用Java生成二维码的源码案例以及必要的jar包,这对于理解和实践Java二维码生成非常有帮助。 首先,我们需要了解什么是二维码。二维码(Quick Response Code)是二维条形码的一种,它能在有限的...

    免费JAVA生成二维码源码 带LOGO 带jar包

    在这个案例中,源码可能包括一个或多个类,它们实现了二维码生成的逻辑。这些类可能使用了开源库,如ZXing(Zebra Crossing)或者qrcode4j,这些都是Java中常用的二维码生成库。开发者可以通过调用相关方法,输入要...

    Android 二维码扫描案例源码.zip

    总结来说,"Android 二维码扫描案例源码.zip"文件提供了实现二维码扫描功能的完整示例,包括扫描、解析、生成二维码等步骤。通过研究源码,开发者可以了解如何集成这些功能,同时也可以根据自己的需求进行定制和优化...

    仿芝麻多合一收款二维码页面源码

    在实现多合一收款二维码的过程中,开发者可能利用了JavaScript或者jQuery这样的库来动态生成和切换不同支付平台的二维码。JavaScript可以用来处理用户的交互,比如点击某个按钮时更换显示的二维码。同时,可能还涉及...

    解决jdk1.4生成二维码问题,因为现下生成二维码的jar包,版本最低支持jdk1.5以上的版本,老的项目中想使用二维码,直接使用jar包无法使用

    3.3 把源码和现有案例放到一个工程下,jdk修改为jdk1.4后报错,逐步修改错误,错误修复后,生成二维码正常。 3.4修改其他反编译后的错误,还有两个错误,未修改,可能会影响到二维码解码问题。 3.5 把修改的源码打包...

    二维码的服务端生成 源代码

    二维码在当今信息化社会中扮演着重要的角色,尤其在服务端生成二维码时,它极大地提高了数据交换的效率。本文将深入探讨二维码服务端生成的相关知识点,包括二维码的基本原理、服务端生成流程、常用库的介绍以及实际...

    带图片无白边二维码源码

    在本案例中,我们主要关注的是如何利用ZXing生成带图片且无白边的二维码。 生成带图片的二维码,首先要理解二维码的结构。二维码由多个模块组成,每个模块可以是黑色或白色,通过不同的黑白组合来存储数据。在ZXing...

    Android应用源码之zxing 生成二维码名片.zip

    本源码着重展示了如何在Android应用中集成ZXing库来生成二维码名片,对于安卓开发者来说,这是一个很好的学习和设计参考案例。 ZXing库主要由以下几个关键组件构成: 1. **Core模块**:这是ZXing的核心部分,包含...

    二维码生成源码

    在本案例中,我们将讨论如何使用Java来生成二维码,并参考草料网(https://cli.im/mob)提供的接口或服务。 1. **二维码基本原理** - 二维码是由黑白相间的模块组成,通过特定的编码规则将数据转化为图像。 - 每...

    二维码生成器附源码

    总之,通过理解和运用这些技术,开发者可以基于给定的源码打造出功能完备且具有独特界面风格的二维码生成器应用。无论是对于学习Android编程还是提升开发效率,这个项目都是一个很好的实践案例。

    Android 仿微信二维码名片源码.zip源码资源下载

    4. **事件监听与处理**:在用户交互方面,源码可能会包含点击事件的监听,如扫描按钮的点击触发二维码扫描,生成按钮的点击生成二维码图片,并在界面上显示结果。 5. **数据持久化**:为了保存用户生成的二维码名片...

    Java毕业设计项目二维码门禁管理系统项目源码

    【Java毕业设计项目二维码门禁管理系统项目源码】是一个典型的基于Java技术的软件开发实践,主要应用于现代化的门禁安全管理系统。此项目的核心是利用二维码技术进行身份验证和权限控制,为用户提供便捷、安全的进出...

    Android zxing 生成二维码名片-IT计算机-毕业设计.zip

    对于学生毕业设计来说,掌握如何利用ZXing库生成二维码名片是一个实用且有趣的课题。这篇内容将深入探讨如何在Android应用中集成ZXing,创建一个能够生成二维码名片的功能。 首先,我们需要理解二维码名片的基本...

    java连接北洋牌打印机打印二维码

    本案例涉及的是使用Java连接北洋品牌的二维码打印机进行打印操作。这个过程通常需要借助于特定的库或者驱动程序,以及Java的本地接口(JNI)技术。下面将详细阐述相关知识点。 首先,Java Native Interface (JNI) ...

    android二维码的生成和解析

    2. **生成二维码**:生成二维码的过程主要包括创建Bitmap对象和配置编码参数。首先,你需要准备要编码的数据,然后使用二维码编码类(如`com.google.zxing.Encode`)生成一个编码后的BitMap。编码参数可以设置如纠错...

    安卓Android源码——二维码扫描案例.rar

    这个“安卓Android源码——二维码扫描案例”提供了实现二维码扫描的实例代码,帮助开发者理解如何在Android应用中集成二维码扫描功能。 首先,我们需要了解二维码的基本概念。二维码(Quick Response Code)是一种...

    支付宝当面付(java源码)

    本Java源码实现详细介绍了如何在Java环境中集成支付宝当面付功能,包括支付、查询订单、退款以及生成支付二维码等关键步骤。 首先,我们需要理解Java调用支付宝接口的基本流程。这通常涉及到以下几个步骤: 1. **...

    QRCode二维码源码

    本主题主要围绕"QRCode二维码源码"展开,旨在帮助开发者理解二维码编码和解码的原理,并掌握如何在自己的项目中实现二维码生成和识别功能。 1. **QRCode编码过程** - 数据预处理:首先,将待编码的信息进行编码,...

    二维码扫描的源代码Demo

    ZXing,也称为“Zebra Crossing”,由Google开发并维护,提供了一系列工具和API,用于读取、生成和处理各种类型的条形码和二维码。ZXing库包含一个Java核心库,可以跨平台运行,同时也有Android专有的集成方式,使得...

    Java实现斑马打印机ZPL指令打印,源码,可运行

    7. **源码结构**:源代码可能包含一个或多个Java类,如`ZebraPrinter`或`ZPLCommandGenerator`,分别用于管理打印机连接、生成ZPL指令和发送指令。通过阅读源码,开发者可以学习到如何组织代码以实现特定功能。 8. ...

Global site tag (gtag.js) - Google Analytics