转载

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

一、目标

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

二、概况

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

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

2.项目目录

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

三、用到的第三方资源

1.google的扫码包zxing

2.JQuery

四、步骤(用myEclipse)

1.新建工程,选择web project

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

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

2.1

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

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

2.2.2右键jar包加入buildpath

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

2.2加入jQuery文件

2.2.1在WebRoot下新建文件夹js

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

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

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

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

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文件)

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

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

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,如下图

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

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

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,访问文件,如下图

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

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

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

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

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

PS:

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

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

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

常见颜色代码如下:

这些颜色常数是定义在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

正文到此结束
Loading...