Java利用QR Code生成二维码(一)

来源:互联网 发布:js导出table到excel 编辑:程序博客网 时间:2024/06/08 19:34

需要的jar包分别是:core-2.2.jar、javase-2.2.jar

<dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>2.2</version></dependency><dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>2.2</version></dependency>

ORCode工具类如下:

package example;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Map;import javax.imageio.ImageIO;import com.google.zxing.BarcodeFormat;import com.google.zxing.BinaryBitmap;import com.google.zxing.MultiFormatReader;import com.google.zxing.MultiFormatWriter;import com.google.zxing.NotFoundException;import com.google.zxing.Result;import com.google.zxing.WriterException;import com.google.zxing.client.j2se.BufferedImageLuminanceSource;import com.google.zxing.client.j2se.MatrixToImageWriter;import com.google.zxing.common.BitMatrix;import com.google.zxing.common.HybridBinarizer;/** * 二维码工具类 *  * @author Administrator *  */public class QRCodeTool {/** * 生成二维码 *  * @param qrCodeData *            二维码字符串 * @param filePath *            文件路径 * @param charset *            字符编码 * @param hintMap * @param qrCodeheight *            二维码的高度 * @param qrCodewidth *            二维码的宽度 * @throws WriterException * @throws IOException */public static void createQRCode(String qrCodeData, String filePath,String charset, Map hintMap, int qrCodeheight, int qrCodewidth)throws WriterException, IOException {BitMatrix matrix = new MultiFormatWriter().encode(new String(qrCodeData.getBytes(charset), charset),BarcodeFormat.QR_CODE, qrCodewidth, qrCodeheight, hintMap);MatrixToImageWriter.writeToFile(matrix, filePath.substring(filePath.lastIndexOf('.') + 1), new File(filePath));}/** * 读取二维码 *  * @param filePath *            文件路径 * @param charset *            字符编码 * @param hintMap * @return * @throws FileNotFoundException * @throws IOException * @throws NotFoundException */public static String readQRCode(String filePath, String charset, Map hintMap)throws FileNotFoundException, IOException, NotFoundException {BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(ImageIO.read(new FileInputStream(filePath)))));Result qrCodeResult = new MultiFormatReader().decode(binaryBitmap,hintMap);return qrCodeResult.getText();}}

测试类如下:

package example;import java.io.IOException;import java.util.HashMap;import java.util.Map;import com.google.zxing.EncodeHintType;import com.google.zxing.NotFoundException;import com.google.zxing.WriterException;import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;public class QRCodeToolTest {public static void main(String[] args) throws WriterException, IOException,NotFoundException {// 二维码字符串String qrCodeData = "https://www.baidu.com/";// 二维码名称String filePath = "QRCode.png";// 字符编码String charset = "UTF-8"; // "ISO-8859-1"Map hintMap = new HashMap();hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);QRCodeTool.createQRCode(qrCodeData, filePath, charset, hintMap, 400,400);System.out.println("二维码图像创建成功!");System.out.println("读取二维码数据: "+ QRCodeTool.readQRCode(filePath, charset, hintMap));}}


二维码图片如下:


0 0