Статьи

Создать изображение QR-кода из программы Java

Если вы разбираетесь в технологиях и гаджетах, вы должны знать о QR-кодах. Вы найдете это везде в наши дни — в блогах, на сайтах и ​​даже в некоторых общественных местах. Это очень популярно в мобильных приложениях, где вы сканируете QR-код с помощью приложения сканера QR-кода, и он покажет вам текст или перенаправит вас на веб-страницу, если она имеет URL-адрес. Я столкнулся с этим недавно и нашел это очень интересным. Если вы хотите узнать о QR-коде, вы можете найти много полезной информации на QR-странице в Википедии. Когда я нашел такие изображения на многих веб-сайтах, я начал искать, как сгенерировать их с помощью Java-кода. Я изучил некоторые API, доступные на рынке как open source, и обнаружил, что zxing — самый простой и лучший в использовании.

Вот программа, которую вы можете использовать для создания изображения QR-кода с помощью zxing API.

01
02
03
04
05
06
07
08
09
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package com.adly.generator;
 
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
 
import javax.imageio.ImageIO;
 
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
 
public class GenerateQRCode {
 
 /**
  * @param args
  * @throws WriterException
  * @throws IOException
  */
 public static void main(String[] args) throws WriterException, IOException {
  String qrCodeText = 'http://www.journaldev.com';
  String filePath = 'D:\\Pankaj\\JD.png';
  int size = 125;
  String fileType = 'png';
  File qrFile = new File(filePath);
  createQRImage(qrFile, qrCodeText, size, fileType);
  System.out.println('DONE');
 }
 
 private static void createQRImage(File qrFile, String qrCodeText, int size,
   String fileType) throws WriterException, IOException {
  // Create the ByteMatrix for the QR-Code that encodes the given String
  Hashtable hintMap = new Hashtable();
  hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
  QRCodeWriter qrCodeWriter = new QRCodeWriter();
  BitMatrix byteMatrix = qrCodeWriter.encode(qrCodeText,
    BarcodeFormat.QR_CODE, size, size, hintMap);
  // Make the BufferedImage that are to hold the QRCode
  int matrixWidth = byteMatrix.getWidth();
  BufferedImage image = new BufferedImage(matrixWidth, matrixWidth,
    BufferedImage.TYPE_INT_RGB);
  image.createGraphics();
 
  Graphics2D graphics = (Graphics2D) image.getGraphics();
  graphics.setColor(Color.WHITE);
  graphics.fillRect(0, 0, matrixWidth, matrixWidth);
  // Paint and save the image using the ByteMatrix
  graphics.setColor(Color.BLACK);
 
  for (int i = 0; i < matrixWidth; i++) {
   for (int j = 0; j < matrixWidth; j++) {
    if (byteMatrix.get(i, j)) {
     graphics.fillRect(i, j, 1, 1);
    }
   }
  }
  ImageIO.write(image, fileType, qrFile);
 }
 
}

Вот файл изображения QR-кода, созданный этой программой. Вы можете использовать мобильное приложение для сканирования QR-кода, чтобы протестировать его. Он должен указывать на домашний URL JournalDev.

Если у вас нет мобильного приложения для тестирования, не волнуйтесь. Вы также можете проверить это с помощью zxing API через командную строку.

Я нахожусь на ОС Windows, и вот команда, чтобы проверить это. Если вы работаете в Unix / Linux / Mac OS, измените его соответствующим образом.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
D:\Pankaj\zxing>java -cp javase\javase.jar;core\core.jar com.google.zxing.client.j2se.CommandLineRunner D:\Pankaj\JD.png
file:/D:/Pankaj/JD.png (format: QR_CODE, type: URI):
Raw result:
 
http://www.journaldev.com
 
Parsed result:
 
http://www.journaldev.com
 
Found 4 result points.
  Point 0: (35.5,89.5)
  Point 1: (35.5,35.5)
  Point 2: (89.5,35.5)
  Point 3: (80.5,80.5)


Совет по генерации динамического QR-кода

Если вы хотите генерировать QR-код динамически, вы можете сделать это с помощью Google Charts Tools.
Для приведенного выше сценария URL будет https://chart.googleapis.com/chartchs=125 × 125&cht=qr&chl=http://www.journaldev.com.

Приятного кодирования и не забудьте поделиться!

Ссылка: Сгенерируйте изображение QR-кода из Java-программы от нашего партнера JCG Панкаджа Кумара в блоге Developer Recipes .