在实际开发中,二维码生成是很常见的,然而google给咱们提供了一套快捷生成二维码的jar,下面咱们来研究一下怎么使用.java
<!-- 谷歌二维码 --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.2.1</version> </dependency>
package com.cppba.core.util; 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; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import java.awt.image.BufferedImage; import java.util.Hashtable; public class QRCodeUtil { /** * * QRCodeCreate(生成二维码) * @param content 二维码内容 * @param W 宽度 * @param H 高度 * @return */ public static BufferedImage QRCodeCreate(String content, Integer W, Integer H){ //生成二维码 MultiFormatWriter mfw = new MultiFormatWriter(); BitMatrix bitMatrix = null; Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>(); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); hints.put(EncodeHintType.MARGIN, 0); try { bitMatrix = mfw.encode(content, BarcodeFormat.QR_CODE, W, H,hints); } catch (WriterException e) { e.printStackTrace(); } 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); } } return image; } }
/** * 获取二维码 * text 必须用UTF8编码格式,x内容出现 & 符号时,请用 %26 代替,换行符使用 %0A */ @RequestMapping("/qrcode_image.htm") public void qrcode_image( HttpServletRequest request,HttpServletResponse response, @RequestParam(value="text", defaultValue="")String text) throws IOException { response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); BufferedImage image = QRCodeUtil.QRCodeCreate(text, 250, 250); ImageIO.write(image, "png",response.getOutputStream()); }
咱们启动咱们的项目,在浏览器直接访问咱们测试控制器,并带上参数 我这里是:http://127.0.0.1:8080/cppba-web/qrcode_image.htm?text=http://www.baidu.comgit
咱们能够有手机扫描一下二维码,的确进的是百度首页,固然你能够本身修改text参数来动态生成你想要的二维码内容github
这里要提醒的是,text中不能带有“&“和换行符,当遇到这种符号时:& 符号用 %26 代替,换行符使用 %0A代替。web
github地址:https://github.com/bigbeef 我的博客:http://www.cppba.com浏览器