Java生成二维码的方法

2017-04-23 21:09 阅读 1,489 次 评论 0 条

Java生成二维码需要用到QRCode.jar包,见附件。

二维码生成核心代码: TwoDimensionCode.java和TwoDimensionCodeImage.java。见附件。

生成二维码图片的方法:

/**

* 生成二维码(QRCode)图片的公共方法

* @param content 存储内容

* @param imgType 图片类型

* @param size 二维码尺寸

* @return

*/

private BufferedImage qRCodeCommon(String content, String imgType, int size) {

BufferedImage bufImg = null;

try {

Qrcode qrcodeHandler = new Qrcode();

// 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小

qrcodeHandler.setQrcodeErrorCorrect('M');

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;

}

其中容错率和尺寸都可设置。容错率越值越大能保存的信息越少,对清晰度要求越小。尺寸越小可保存的信息越小,对清晰度要求越小。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:Java生成二维码的方法 | 雨晨博客
分类:JAVA, 程序笔记 标签:,

发表评论


表情