java 生成二维码并直接在web输出

二维码是什么玩意,有什么好处我就不做过多解释了,如果你还不懂,可以百科一下。

我还是比较注重于亲自动手写一下。

网上java生成二维码文章很多,无非就是用谷歌的Zxing.jar开发包和小日本写的qrcode。

但是都直接生成图片,本文用的是谷歌Zxing.jar(对小日本印象不好)直接通过response.getOutputStream()输出字节流到页面,在页面上显示。

先下载zxing开发包,这里用到的只是core那个jar包。

下图为实现功能的 imageZxing.jsp;

<%@ page language="java" pageEncoding="utf-8"%>
<%@ page contentType="image/jpeg" import="
java.awt.image.*,
java.util.*,
javax.imageio.*,
com.google.zxing.BarcodeFormat,
com.google.zxing.EncodeHintType,
com.google.zxing.MultiFormatWriter,
com.google.zxing.WriterException,
com.google.zxing.common.BitMatrix"
%>

<%
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

//String text = request.getParameter("str");  如果内容自己定义的话,可以直接传过来
String text = "hello Mr.Xu!";
int width2 = 100;
int height2 = 100;
//二维码的图片格式
String format = "gif";
Hashtable hints = new Hashtable();
//内容所使用编码
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
try {
BitMatrix bitMatrix = new MultiFormatWriter().encode(text,BarcodeFormat.QR_CODE, width2, height2, hints);

int width = bitMatrix.getWidth();
int height = bitMatrix.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, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF); //二维码图片为黑白两色
}
}
ImageIO.write(image,"gif",response.getOutputStream());
out.clear();
//生成二维码
//File outputFile = new File("d:"+File.separator+"new.gif");
//MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile);
} catch (WriterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
%>

代码在jsp中实现,只要你导入开发包,就可以直接拿过来用。

在你页面需要二维码图片的地方直接html调用即可

第一次写博客,不足之处多多包涵!


你可能感兴趣的:(java 生成二维码并直接在web输出)