1. 程式人生 > >Java開發二維碼(二) 使用QR Code開發

Java開發二維碼(二) 使用QR Code開發

下載後生成jar包方法和上篇文章一樣,通過Eclipse來生成匯出

建立一個Java專案:

生成二維碼:

package com.itstar.qrcode;


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;
/**
 *生成二維碼
 */
public class CreateQRCode {
	public static void main(String[] args) throws Exception  {
		Qrcode x = new Qrcode();
		x.setQrcodeErrorCorrect('M');// 糾錯等級 L M H Q
		x.setQrcodeEncodeMode('B');// N代表數字,A代表a-z,B代表其他字元
		x.setQrcodeVersion(7);// 版本
		String qrData = "二維碼";
		
		
		
		
		int width = 67 + 12 * (7-1);
		int height =  67 + 12 * (7-1);


		// 依託了Java GUI畫圖工具
		BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		// 畫圖
		Graphics2D gs = bufferedImage.createGraphics();
		// 設定屬性
		gs.setBackground(Color.WHITE);
		gs.setColor(Color.BLACK);
		gs.clearRect(0, 0, width, height);
		


		int pixoff = 2;// 新增偏移量,不加有可能導致格式出錯


		// 填充內容
		byte[] d = qrData.getBytes("gb2312");// 轉為中文
		if (d.length > 0 && d.length < 120) {
			boolean[][] s = x.calQrcode(d);


			for (int i = 0; i < s.length; i++) {
				for (int j = 0; j < s.length; j++) {
					if (s[j][i]) {
						gs.fillRect(j * 3+ pixoff, i * 3 + pixoff, 3, 3);
					}
				}
			}
		}
		//寫入 結束
		gs.dispose();
		bufferedImage.flush();
		
		ImageIO.write(bufferedImage, "png", new File("F:/code/qrcode.png"));
	}
}

run as執行,在我們指定的檔案下生成二維碼:

這裡的二維碼width和height需要運用特定的公式來計算,如果是自己定義,二維碼將會生成下面的二維碼:

原因:定義的寬高太大,不符合版本,只能根據其定義的寬高公式來計算:

int width = 67 + 12 * (7-1);
int height =  67 + 12 * (7-1);