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

纵饮孤独 提交于 2019-12-03 23:00:46

废话不多说,直接上代码,实现的功能比较简单:利用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,扫码后会跳转到相应的页面进行解析,如果是外部应用,则会跳转到我们项目的登录页面,过滤器里面弄一下就可以实现了。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!