gpt4 book ai didi

利用Java生成带有文字的二维码

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章利用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生成带有文字的二维码》的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流.

最后此篇关于利用Java生成带有文字的二维码的文章就讲到这里了,如果你想了解更多关于利用Java生成带有文字的二维码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com