手把手教你生成二维码-google.zxing

一、目标

输入网址,生成网址的二维码

二、概况

1.效果:UI丑,但功能实现了

2.项目目录

三、用到的第三方资源

1.google的扫码包zxing

2.JQuery

四、步骤(用myEclipse)

1.新建工程,选择web project

2.加入第三方资源(zxing包和jQuery)

2.1

2.1.1复制,粘贴,加入zxing的jar包(所有文件在附件中下载)

2.2.2右键jar包加入buildpath

2.2加入jQuery文件

2.2.1在WebRoot下新建文件夹js

复制粘贴jQuery文件到此文件夹

3.按需求修改webroot下的index.jsp页面如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>二维码</title>
    <script src="js/jquery.min.js"></script>
    <script>
    	$(function(){
    		$("input[type=submit]").click(function(e){
    			e.preventDefault();
    			$("#qrcode_div").empty().append("<img id=‘qrImg‘ />");
    			$("#qrImg").attr("src", "qrcode?website="+$("input[type=text][name=website]").val());//此处会访问servlet
    		});
    	});
    </script>
  </head>

  <body>
    <form>
    	网址<input type="text" name="website" />
    	<input type="submit" value="生成二维码" />
    	<div id="qrcode_div"></div>
    </form>
  </body>
</html>

4.新建servlet文件

4.1右键工程文件夹--》new ---->servlet(myEclipse会自动配置servlet到web.xml文件)

QRCode.java servlet文件的代码如下:

package servlet;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import util.QRCodeUtil;

import com.google.zxing.WriterException;

public class QRCode extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		String website = request.getParameter("website");
		try {
			QRCodeUtil.genGR(website, response.getOutputStream());
		} catch (WriterException e) {
			e.printStackTrace();
		}
		//String website = request.getAttribute("website").toString();
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

5.新建辅助类文件,作用是生成二维码(QRCodeUtil.java)

5.1右键工程文件夹--》new--->class,如下图

QRCodeUtil.java的代码如下:

package util2;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Hashtable;

import javax.imageio.ImageIO;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;

public class QRCodeUtil {

	private static final int BLACK = 0xFF000000;
	private static final int WHITE = 0xFFFFFFFF;

	public static void genGR(String website, OutputStream output) throws WriterException, IOException {
		int width = 300;
		int height = 300;
		String format = "jpg";
        Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
        //Hashtable hints = new Hashtable();
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
		BitMatrix bm = new MultiFormatWriter().encode(website, BarcodeFormat.QR_CODE, width, height, hints);

		BufferedImage image = toImage(bm);
		ImageIO.write(image, format, output);	//把二维码写到response的输出流
	}

	private static BufferedImage toImage(BitMatrix bm) {
		int width = bm.getWidth();
		int height = bm.getHeight();
		BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		for(int x = 0;x < width; x++){
			for(int y = 0; y < height; y++ ){
				image.setRGB(x, y, bm.get(x, y) ? BLACK : WHITE);
			}
		}
		return image;
	}

}

6.至此,所有文件已完成,接下来布置项目,启动tomcat,访问文件,如下图

布置完成后,点击debug启动项目

启动成功后,在浏览器中访问文件

PS:

可以修改QRCodeUtil.java文件中的颜色配置,以生成彩色的二维码,例如:

private static final int BLACK = 0xff0000ff;//0xFF000000;
private static final int WHITE = 0xffffff00;//0xFFFFFFFF;

常见颜色代码如下:

这些颜色常数是定义在android.graphics.Color里的:


类型


常数



色码


int


BLACK


-16777216


0xff000000


int


BLUE


-16776961


0xff0000ff


int


CYAN


-16711681


0xff00ffff


int


DKGRAY


-12303292


0xff444444


int


GRAY


-7829368


0xff888888


int


GREEN


-16711936


0xff00ff00


int


LTGRAY


-3355444


0xffcccccc


int


MAGENTA


-65281


0xffff00ff


int


RED


-65536


0xffff0000


int


TRANSPARENT


0


0x00000000


int


WHITE


-1


0xffffffff


int


YELLOW


-256


0xffffff00

项目附件:

http://files.cnblogs.com/files/shamgod/QRCode.zip

时间: 2024-11-05 13:36:05

手把手教你生成二维码-google.zxing的相关文章

Java生成带小图标的二维码-google zxing 工具类

近期一直忙于开发微信商城项目,应客户要求,要开发个有图标的二维码.经过两次改版,终于实现了该功能(第一次没有小图标,这次才整合好的),如下是完整代码 . 该代码使用Java7开发,另外使用 core-2.2.jar jar[http://pan.baidu.com/s/1skTwHQ1] 包 . 1 package com.rick.common.utils; 2 3 4 import java.awt.Color; 5 import java.awt.Graphics2D; 6 import

使用PHP生成二维码的两种方法(带logo图像)

一.利用Google API生成二维码 Google提供了较为完善的二维码生成接口,调用API接口很简单,以下是调用代码: $urlToEncode="http://www.jb51.net"; generateQRfromGoogle($urlToEncode); /** * google api 二维码生成[QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式] * @param string $chl 二维码包含的信息,可以是数字.字符.二进制信息

PHP生成二维码二种方法和实例

PHP生成二维码的两个方法和实例,分别使用Google API和PHP二维码生成类库PHP QR Code实现. 之前介绍过通过使用jQuery插件来生成二维码,今天分享下如何使用PHP生成二维码,以及如何生成中间带LOGO图像的二维码.利用Google API生成二维码Google提供了较为完善的二维码生成接口,调用API接口很简单,以下是调用代码: $urlToEncode="http://www.jbxue.com"; generateQRfromGoogle($urlToEnc

自动生成二维码

方法一:<style type="text/css">.eweima{    width:200px; height:200px; margin:auto;}</style><div class="eweima">    <img src="http://localhost/xianhewang/index.php?a=user&user_id=82 width="200" height

利用google开源工具生成二维码

import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import com.google.zxing.LuminanceSource; public class BufferedImageLuminanceSource extends LuminanceSource { private final BufferedImage image; pri

使用Google API Tool:Infographics生成二维码

Google Developer 提供了生成二维码API,下面介绍一下如何生产二维码,以及相关参数设置. 官方地址:https://google-developers.appspot.com/chart/infographics/docs/qr_codes 下面是一段使用Google Chart Tools提供的生产二维码的例子代码: <?php //使用google api tool生成二维码 function createQR($chlData, $chsWidth = 125, $chsH

PHP在线生成二维码代码(google api)的例子

通过google在线生成二维码的api在线生成二维码. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> &l

利用google api生成二维码名片

利用google api生成二维码名片 二维条码/二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码.堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成:矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用“点”表示二进制“1”,用“空”表示二进制“0”,“点”和“空”的排列组成代码. 堆叠式/行排式二维条码,如,Code 16K.Code 49.PDF417等. 矩阵式二维码,最流行莫过于QR CODE. 矩阵式二维码存储的数据量更大:可以包含数字.字符,及中文文本等混合内容:有一

Android基于Google Zxing实现二维码/条形码扫描、生成二维码/条形码

 二维码/条形码生成器 二维码/条形码扫描器 一.二维码与条形码工作原理 目前的很多应用上都有扫码功能,当时微信推出二维码扫码功能时,觉得imagine,通过一张简单的图片就能扫描添加还有,还有分享名片功能(也是一张二维码图片,识别扫描). 下面小编将通过文章主要介绍QRCode方面技术. QRCode是被广泛应用的一种二维码,解码速度快.二维码相对于条形码来说,二维码的存储数据量更大,空间利用率高,有一定的容错性. 二维码原理介绍: 二维码是用某种特定的几何图形按一定的规律在平面上分布的黑