激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 利用Java生成帶有文字的二維碼

利用Java生成帶有文字的二維碼

2020-06-19 11:41daisy JAVA教程

二維碼在我們現在的生活中可謂是隨處可見,這篇文章主要是介紹如何利用Java生成帶有文字的二維碼,對大家學習Java具有一定的參考借鑒價值。有需要的朋友們下面來一起看看吧。

介紹

主要使用了goole的zxing包,下面給出了示例代碼,很方便大家的理解和學習,代碼都屬于初步框架,功能有了,需要根據實際使用情況完善優化。

第一步、maven導入zxing

?
1
2
3
4
5
<dependency>
 <groupId>com.google.zxing</groupId>
 <artifactId>core</artifactId>
 <version>3.2.1</version>
</dependency>

第二步、開始生成二維碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
private static final int BLACK = 0xFF000000;
private static final int WHITE = 0xFFFFFFFF;
/**
 * 把生成的二維碼存入到圖片
 * @param matrix zxing包下的二維碼類
 * @return
 */
public static BufferedImage toBufferedImage(BitMatrix matrix) {
 int width = matrix.getWidth();
 int height = matrix.getHeight();
 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
 for (int x = 0; x < width; x++) {
  for (int y = 0; y < height; y++) {
   image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);
  }
 }
 return image;
}
/**
 * 生成二維碼并寫入文件
 * @param content 掃描二維碼的內容
 * @param format 圖片格式 jpg
 * @param file  文件
 * @throws Exception
 */
public static void writeToFile(String content, String format, File file)
  throws Exception {
 MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
 @SuppressWarnings("rawtypes")
 Map hints = new HashMap();
 //設置UTF-8, 防止中文亂碼
 hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
 //設置二維碼四周白色區域的大小
 hints.put(EncodeHintType.MARGIN,1);
 //設置二維碼的容錯性
 hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
 //畫二維碼
 BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);
 BufferedImage image = toBufferedImage(bitMatrix);
 if (!ImageIO.write(image, format, file)) {
  throw new IOException("Could not write an image of format " + format + " to " + file);
 }
}

第三步、把文字寫入二維碼圖片中:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
 * 給二維碼圖片加上文字
 * @param pressText 文字
 * @param qrFile  二維碼文件
 * @param fontStyle
 * @param color
 * @param fontSize
 */
public static void pressText(String pressText, File qrFile, int fontStyle, Color color, int fontSize) throws Exception {
 pressText = new String(pressText.getBytes(), "utf-8");
 Image src = ImageIO.read(qrFile);
 int imageW = src.getWidth(null);
 int imageH = src.getHeight(null);
 BufferedImage image = new BufferedImage(imageW, imageH, BufferedImage.TYPE_INT_RGB);
 Graphics g = image.createGraphics();
 g.drawImage(src, 0, 0, imageW, imageH, null);
 //設置畫筆的顏色
 g.setColor(color);
 //設置字體
 Font font = new Font("宋體", fontStyle, fontSize);
 FontMetrics metrics = g.getFontMetrics(font);
 //文字在圖片中的坐標 這里設置在中間
 int startX = (WIDTH - metrics.stringWidth(pressText)) / 2;
 int startY = HEIGHT/2;
 g.setFont(font);
 g.drawString(pressText, startX, startY);
 g.dispose();
 FileOutputStream out = new FileOutputStream(qrFile);
 ImageIO.write(image, "JPEG", out);
 out.close();
 System.out.println("image press success");
}

第四步、在main方法中測試一下,一個中間帶文字的二維碼就生成了

?
1
2
3
4
5
public static void main(String[] args) throws Exception {
 File qrcFile = new File("/Users/deweixu/","google.jpg");
 writeToFile("www.google.com.hk", "jpg", qrcFile);
 pressText("谷歌", qrcFile, 5, Color.RED, 32);
}

總結

以上就是這篇文章《利用Java生成帶有文字的二維碼》的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一区二区三区成人 | av免费不卡国产观看 | 色网免费观看 | 亚洲视频成人在线 | 99精品视频久久精品视频 | 欧美视频一区二区三区在线观看 | 欧美性生交xxxxx免费观看 | 美女网站色免费 | 免费在线性爱视频 | 成人免费观看49www在线观看 | 日韩精品a在线观看 | 成人在线视频免费 | 宅男噜噜噜66国产在线观看 | 成人国产精品一区 | 国产噜噜噜噜久久久久久久久 | 亚洲第一男人天堂 | 免费一级片观看 | 久久精品男人 | www.99re1.com| 狠狠色成色综合网 | 毛片网站网址 | 国产中文99视频在线观看 | 欧美极品欧美精品欧美视频 | 一级片九九 | 国产精品观看在线亚洲人成网 | 日韩黄色片在线观看 | 国产精品观看在线亚洲人成网 | 成人激情在线 | 国产精品久久久久久久久久久久久久久久 | av色先锋 | 国产又粗又爽又深的免费视频 | 99精品视频99 | 久久精品观看 | 国产精品99精品 | 国产亚洲精品yxsp | 在线播放污 | 国产99久久精品一区二区 | 日韩三级伦理在线观看 | 亚洲网站在线观看 | 亚洲免费视频一区 | 国产成人小视频在线观看 |