Java를 사용하여 문자가 있는 QR 코드 생성

3664 단어 java문자QR코드
소개
주로 구글의 zxing 패키지를 사용했는데 다음에 예시 코드를 제시했기 때문에 모두의 이해와 학습에 편리하다. 코드는 모두 초보적인 구조에 속하고 기능이 있기 때문에 실제 사용 상황에 따라 보완하고 최적화해야 한다.
첫 번째 단계,maven 가져오기zxing

<dependency>
 <groupId>com.google.zxing</groupId>
 <artifactId>core</artifactId>
 <version>3.2.1</version>
</dependency>
2단계, QR코드 생성을 시작합니다.

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);
 }
}
세 번째 단계는 QR코드 이미지에 텍스트를 기록합니다.

/**
 *  
 * @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 방법에서 테스트를 하면 중간에 문자가 있는 QR코드가 생성된다

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);
}
총결산
이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 어느 정도 도움이 되고 의문이 있으면 댓글로 교류하시기 바랍니다.

좋은 웹페이지 즐겨찾기