国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看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网站免费看 | 综合久久综合 | 一级欧美| 久久久综合网 | 都市激情综合 | 国产在线视频网 | 毛片av在线播放 | 国产成人午夜 | 日韩欧美精品在线 | 激情网站免费观看 | 亚洲男人网| 国产欧美日韩二区 | 高清国产午夜精品久久久久久 | 亚洲精品久久久久中文字幕欢迎你 | av亚洲在线 | 国内外成人激情免费视频 | 免费观看欧美一级大片 | 午夜国产在线 | 欧美一区 | 久久午夜羞羞影院免费观看 | 国产一区二区久久 | 日韩免费一区二区 | 99在线视频观看 | 中文字幕在线日韩 | 日韩视频―中文字幕 | 在线一区二区三区做爰视频网站 | 国产精品爱久久久久久久 | 日韩在线观看中文字幕 | 久久久精品国产 | 欧美亚洲国产激情 | 999精品视频| 成人午夜精品久久久久久久网站 | 在线视频一区二区 | 久久精品无码一区二区日韩av | 国产一级一级国产 | 亚洲一区二区三区视频 | 久久久影视 | 成人片网址 | 亚洲精品国产区欧美区在线 | 99精品国产高清一区二区麻豆 |