巩固自身,分享别人
因为代码注释比较多,所以就不多加解释。
package com.qrcode; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import javax.imageio.ImageIO; import com.swetake.util.Qrcode; /** * 二维码,送女朋友 */ public class QRcodeUtil { /** * 这个类的入口 * * @param args */ public static void main(String[] args) { // 创建一个信息 String message = "520"; // 定义一个字节数组 byte[] messageBytes = null; // 定义一个图片文件的缓冲对象 BufferedImage bufferedImage = null; // 定义一个画板 --》画板就是图片的载体 Graphics2D gs = null; // 创建一个二维码对象 Qrcode qrcode = new Qrcode(); // 对二维码的一些属性进行设置 // 容错率 容错率越大,能存储的东西就越少 // L7 M15 Q25 H30 qrcode.setQrcodeErrorCorrect('M'); // 设置编码的方式 qrcode.setQrcodeEncodeMode('B'); // 设置尺寸 尺寸越大 存储的信息就越多 qrcode.setQrcodeVersion(10); // 设置图像的尺寸 --- 尺寸 int len = 171; try { // 得到信息转换成的数组 messageBytes = message.getBytes("utf-8"); // 创建图片缓冲对象 bufferedImage = new BufferedImage(len, len, BufferedImage.TYPE_INT_BGR); // 创建一个画板 gs = bufferedImage.createGraphics(); // 设置背景色 gs.setBackground(Color.white); gs.clearRect(0, 0, len, len); // 设定画笔的颜色 gs.setColor(Color.black); // 创建二维的数组 boolean[][] booleans = qrcode.calQrcode(messageBytes); // 开始正式的绘制 for (int i = 0, k = booleans.length; i < k; i++) { for (int j = 0; j < k; j++) { if (booleans[j][i]) { gs.fillRect(j * 3, i * 3, 3, 3); } } } // 刷新 gs.dispose(); // 输出本地 // 创建一个文件 File file = new File("d:/img.png"); // 将图片保存到本地 ImageIO.write(bufferedImage, "png", file); System.out.println("估计成功了"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
所依赖的jar包是:
这里分享下载地址: 点击打开链接, 密码:yxkb