<span style="font-size:18px;">开发二维码需要两个jar包:qrcode.jar和qrcode_swetake.jar</span>
<span style="font-size:14px;">package com.weixin.utils;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;
<span style="color:#33ccff;">/**
* java生成二维码工具类
* @author LeeterYang
*
*/</span>
</span><span style="font-size:18px;">public class QrcodeUtil {</span><span style="font-size:14px;">
<span style="color:#33ccff;">/**
* 生成二维码图像
* @author LeeterYang
* @param content 生成二维码的文字或其他内容
* @param imgPath 生成二维码图像的保存地址
* @return void无返回值
*/</span>
</span><span style="font-size:18px;">public static void QrcodeImg(String content,String imgPath){
try{
int width = 140;
int height = 140;</span><span style="font-size:14px;">
</span>
<span style="font-size:14px;"><span style="white-space:pre"> </span><span style="color:#33cc00;">//实例化Qrcode</span>
</span><span style="font-size:18px;">Qrcode qrcode = new Qrcode();</span><span style="font-size:14px;">
</span>
<span style="font-size:14px;"><span style="white-space:pre"> </span><span style="color:#33cc00;">//设置二维码的排错率L(7%),M(15%),Q(25%),H(30%)</span>
</span><span style="font-size:18px;">qrcode.setQrcodeErrorCorrect('M');
qrcode.setQrcodeEncodeMode('B');</span><span style="font-size:14px;">
<span style="color:#33cc00;">//设置二维码尺寸,取值范围 1-40</span>
</span><span style="font-size:18px;">qrcode.setQrcodeVersion(7);</span><span style="font-size:14px;">
<span style="color:#33cc00;">//设置图片尺寸</span>
</span><span style="font-size:18px;">BufferedImage bufImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);</span><span style="font-size:14px;">
<span style="color:#33cc00;">//绘制二维码图片</span>
Graphics2D gs = bufImg.createGraphics();
<span style="color:#33cc00;">//设置二维码背景颜色</span>
</span><span style="font-size:18px;">gs.setBackground(Color.WHITE);</span><span style="font-size:14px;">
<span style="color:#33cc00;">//创建二维码的矩形区域,第一个0代表X坐标起始位置,第二个0代表Y坐标起始位置</span>
</span><span style="font-size:18px;">gs.clearRect(0, 0, width, height);</span><span style="font-size:14px;">
<span style="color:#33cc00;">//设置二维码的颜色</span>
</span><span style="font-size:18px;">gs.setColor(Color.BLACK);</span><span style="font-size:14px;">
<span style="color:#33cc00;">//获取内容的字节数组,并设置编码集</span>
</span><span style="font-size:18px;">byte[] contentBytes = content.getBytes("UTF-8");</span><span style="font-size:14px;">
<span style="color:#33cc00;">//120是官方规定二维码只能存储120个字节的内容</span>
</span><span style="font-size:18px;">if(contentBytes.length > 0 && contentBytes.length < 120){</span><span style="font-size:14px;">
<span style="color:#33cc00;">//将字节数组转换为二维数组</span>
</span><span style="font-size:18px;">boolean[][] codeOut = qrcode.calQrcode(contentBytes);</span><span style="font-size:14px;">
<span style="color:#33cc00;">//循环拼接二维码图像</span>
</span><span style="font-size:18px;">for(int i = 0;i < codeOut.length;i++){
for(int j = 0;j < codeOut.length;j++){
if(codeOut[j][i]){
gs.fillRect(j*3+2, i*3+2, 3, 3);
}
}
}
}else{
System.out.println("您输入的内容可能超出了最大限制值!");
}</span><span style="font-size:14px;">
<span style="color:#33cc00;">//生成二维码图片</span>
</span><span style="font-size:18px;">File imgFile = new File(imgPath);
ImageIO.write(bufImg, "png", imgFile);
System.out.println("二维码生成成功!");
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) {
String content = "http://www.baidu.com";
String imgPath = "F:/二维码/1.png";
QrcodeImg(content, imgPath);
}
}</span>