hugh 的个人博客

Everyday is a new day

JAVA生成二维码

-----在线使用

1、使用jar:QRCode.jar【下载

2、代码

 

public static BufferedImage qRCode(String content, String imgType, int size,char correct) {
BufferedImage bufImg = null;
try {
Qrcode qrcodeHandler = new Qrcode();
// 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小
qrcodeHandler.setQrcodeErrorCorrect(correct);
qrcodeHandler.setQrcodeEncodeMode('B');
// 设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大
qrcodeHandler.setQrcodeVersion(size);
// 获得内容的字节数组,设置编码格式
byte[] contentBytes = content.getBytes("utf-8");
// 图片尺寸
int imgSize = 67 + 12 * (size - 1);
bufImg = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB);
Graphics2D gs = bufImg.createGraphics();
// 设置背景颜色
gs.setBackground(Color.WHITE);
gs.clearRect(0, 0, imgSize, imgSize);

        // 设定图像颜色> BLACK    
        gs.setColor(Color.BLACK);    
        // 设置偏移量,不设置可能导致解析出错    
        int pixoff = 2;    
        // 输出内容> 二维码    
        if (contentBytes.length > 0 && contentBytes.length < 800) {    
            boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);    
            for (int i = 0; i < codeOut.length; i++) {    
                for (int j = 0; j < codeOut.length; j++) {    
                    if (codeOut[j][i]) {    
                        gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);    
                    }    
                }    
            }    
        } else {    
            throw new Exception("QRCode content bytes length = " + contentBytes.length + " not in [0, 800].");    
        }    
        gs.dispose();    
        bufImg.flush();    
    } catch (Exception e) {    
        e.printStackTrace();    
    }    
    return bufImg;    
} 

3、页面输出

public void generatorQCode(){

    String cont = getPara("cont");
    if(cont != null && !cont.equals("")){
        cont = cont.trim();
        String correct = getPara("correct");
        char correctChar = 'M';
        if(correct != null && !correct.equals("")){
            correctChar = correct.charAt(0);
        }
        BufferedImage bi = QRCode.qRCodeCommon(cont, "png", 20, correctChar);
        ServletOutputStream sos = null;
        try {
            getResponse().setContentType("image/png");
            sos = getResponse().getOutputStream();
             ImageIO.write(bi, "png", sos);
             sos.flush();
             sos.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
            if(sos != null){
                try {
                    sos.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
      
    }else{
        
    }
    
}

标题:JAVA生成二维码
作者:hugh0524
地址:https://blog.uproject.cn/articles/2016/03/24/1458806733096.html