利用zxing.jar在线生成二维码

本文介绍如何借助Google的zxing.jar库,在网页上实现二维码的在线生成。代码简洁,基础功能完备,适合进一步扩展。建议使用JDK 1.7及以上版本。在作者的项目实践中,已将二维码生成功能封装为工具类,方便在控制器中调用。

废话不多说,直接上代码,实现的功能比较简单:利用Google的zxing.jar包,在网页上直接生成二维码,基础代码比较简单,其他功能有待各位去拓展,解析由前端找插件解析就行了,我就没做解析。注意,jdk请保持在1.7及其以上版本

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;

/*
 * 二维码生成
 */
public class QRCodeMaker {
	/**
         * 二维码输出到网页
         * @param content 需要编码的信息,由这个信息生成二维码
         * @param response
         */
	public static void printInWebpage(String content, HttpServletResponse response){
        try {
            //设定图片尺寸,格式
            int qrcodeWidth = 200;
            int qrcodeHeight = 200;
            String qrcodeFormat = "png";
            HashMap<EncodeHintType, String> hints = new HashMap<EncodeHintType, String>();
            hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
            ServletOutputStream out = response.getOutputStream();
            BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, qrcodeWidth, qrcodeHeight, hints);
            BufferedImage image = new BufferedImage(qrcodeWidth, qrcodeHeight, BufferedImage.TYPE_INT_RGB);            
            MatrixToImageWriter.writeToStream(bitMatrix,qrcodeFormat,out);
        } catch (Exception e) {
            e.printStackTrace();
        }
	}
}

在我的项目应用中,我是将这个二维码生成封装成工具类,在我的控制类里面是这么调用的:

@RequestMapping("/points/QRCode/get")
@ResponseBody
public void getPartrolPointsQRCode(BusPatrolPoints points,
	HttpServletRequest request, HttpServletResponse response){
    //安保线上地址
    String content=Constant.SAFETY_ONLINE_URL+"?point="+points.getPointId();
    QRCodeMaker.printInWebpage(content, response);
}
我这里实现的是扫码跳转到我的项目里面,Constant.SAFETY_ONLINE_URL保存的是线上项目的地址,这里不方便透露。如果是我们项目的APP,扫码后会跳转到相应的页面进行解析,如果是外部应用,则会跳转到我们项目的登录页面,过滤器里面弄一下就可以实现了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值