Java開發二維碼(二) 使用QR Code開發
阿新 • • 發佈:2019-02-04
下載後生成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);