Java生成2维码源码

来源:互联网 发布:tcp网络编程linux 编辑:程序博客网 时间:2024/06/05 02:00

参考http://blog.csdn.net/lmb55/article/details/46039445此博客

@WebServlet(“/PrintTwoBarCode”)//对servlet加注解,可以不用在xml配置servlet
public class PrintTwoBarCode extends HttpServlet {
private static final long serialVersionUID = 1L;

/** * @see HttpServlet#HttpServlet() */public PrintTwoBarCode() {    super();    // TODO Auto-generated constructor stub}/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    // TODO Auto-generated method stub    doPost(request, response);}/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    // TODO Auto-generated method stub    String code = request.getParameter("code");//获取二维码封装的信息    Qrcode testQrcode = new Qrcode();    testQrcode.setQrcodeErrorCorrect('M');    testQrcode.setQrcodeEncodeMode('B');    testQrcode.setQrcodeVersion(7);    byte[] d = code.getBytes("gbk");    BufferedImage image = new BufferedImage(98, 98,            BufferedImage.TYPE_BYTE_BINARY);    Graphics2D g = image.createGraphics();    g.setBackground(Color.WHITE);    g.clearRect(0, 0, 98, 98);    g.setColor(Color.BLACK);    if (d.length > 0 && d.length < 120) {        boolean[][] s = testQrcode.calQrcode(d); //通过calQrcode函数将byte数组转换成boolean数组 ,然后依据编码后的boolean数组绘图         for (int i = 0; i < s.length; i++) {            for (int j = 0; j < s.length; j++) {                if (s[j][i]) {                    g.fillRect(j * 2 + 3, i * 2 + 3, 2, 2);                }            }        }    }    g.dispose();    image.flush();    ImageIO.write(image, "jpg", response.getOutputStream());//把二维码图片写入输出流中}

}

jsp文件如下

<body>    <div class="box">        <h2>扫一扫开启爱的密码</h2>        <img src="PrintTwoBarCode?code=http://blog.csdn.net/lmb55">    </div>  </body>
0 0