zxing详细使用说明 java生成二维码、条形码

zxing详细使用

    • 一、引用maven依赖
    • 二、生成条形码
      • 1.生成二维码基本使用
      • 2.`BarcodeFormat` (条形码类型)
      • 3.`EncodeHintType`(条形码自定义属性)
      • 4.`MultiFormatWriter`(对条形码内容编码)
      • 5.`MatrixToImageWriter`(将BitMatrix写入BufferedImage、文件或流。)

一、引用maven依赖


<dependency>
  <groupId>com.google.zxinggroupId>
  <artifactId>javaseartifactId>
  <version>3.5.0version>
dependency>

二、生成条形码

1.生成二维码基本使用

//条形码内容
String content = "这里是条形码生成的内容!!!";
//条形码格式(选择二维码格式)
BarcodeFormat format = BarcodeFormat.QR_CODE;
//条形码图片宽度和高度
int width = 200, height = 200;
//条形码图片自定义配置(非必填),可以设置二维码的内容编码格式、纠错等级等待
Map<EncodeHintType, Object> hints = new HashMap<>();
// 设置内容编码格式
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
// 设置纠错等级
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
//生成条形码
MultiFormatWriter writer = new MultiFormatWriter();
BitMatrix bitMatrix = writer.encode(content, format, width, height, hints);
//设置二维码颜色
MatrixToImageConfig matrixToImageConfig = new MatrixToImageConfig(0xFF000000, 0xFFFFFFFF);
//转成图片信息
BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix, matrixToImageConfig);

2.BarcodeFormat (条形码类型)

设置生成条形码的类型。
如:二维码、EAN-13码、UPC-A码、Code-128码、Code-39码等等。

条形码类型 描述
BarcodeFormat.AZTEC 阿兹特克码
BarcodeFormat.CODABAR Codabar码
BarcodeFormat.CODE_39 CODE-30码
BarcodeFormat.CODE_93 CODE-93码
BarcodeFormat.CODE_128 CODE-128码
BarcodeFormat.DATA_MATRIX 矩阵式二维条码
BarcodeFormat.EAN_8 EAN-8码
BarcodeFormat.EAN_13 EAN-13码
BarcodeFormat.ITF 交插二五条码
BarcodeFormat.MAXICODE MaxiCode二维条码
BarcodeFormat.PDF_417 PDF417
BarcodeFormat.QR_CODE 二维码
BarcodeFormat.RSS_14 RSS 14
BarcodeFormat.RSS_EXPANDED RSS EXPANDED
BarcodeFormat.UPC_A UPC A
BarcodeFormat.UPC_E UPC E
BarcodeFormat.UPC_EAN_EXTENSION UPC EAN EXTENSION

3.EncodeHintType(条形码自定义属性)

key valueClass value 描述
EncodeHintType.ERROR_CORRECTION ErrorCorrectionLevel ErrorCorrectionLevel.L 容错率~7% 设置条形码识别容错率
ErrorCorrectionLevel.M 容错率~15%
ErrorCorrectionLevel.Q 容错率~25%
ErrorCorrectionLevel.H 容错率~30%
EncodeHintType.CHARACTER_SET String UTF-8、GBK、ASCI等 字符编码,注:存在中文建议使用UTF-8
EncodeHintType.DATA_MATRIX_SHAPE SymbolShapeHint SymbolShapeHint.FORCE_NONE 默认形状 设置条形码外形
SymbolShapeHint.FORCE_SQUARE 正方形
SymbolShapeHint.FORCE_RECTANGLE 矩形
EncodeHintType.DATA_MATRIX_COMPACT Boolean 类型为Boolean,或“true”或“false”字符串值 指定是否为数据矩阵使用紧凑模式
EncodeHintType.MARGIN Integer
String
可以使用Integer或String,但是String必须是整数 设置二维码的外边距
EncodeHintType.PDF417_COMPACT Boolean
String
可以使用Boolean或String,但是String必须是"true" or "false" 指定PDF417是否使用紧凑模式
EncodeHintType.PDF417_COMPACTION Compaction
String
Compaction.AUTO 自动 指定对PDF417使用的压缩模式
Compaction.TEXT 文本
Compaction.BYTE 字节
Compaction.NUMERIC 数字
String 必须和枚举值相同
EncodeHintType.PDF417_DIMENSIONS Dimensions new Dimensions() 指定PDF417的最小和最大行数和列数
EncodeHintType.PDF417_AUTO_ECI Boolean
String
可以使用Boolean或String,但是String必须是"true" or "false" 指定编码PDF417时是否自动插入eci。请注意,在这种情况下,将为输入中的不属于ISO-8859-1字符集的字符选择最紧凑的字符编码。根据经验,有些扫描仪不支持cp-1256(阿拉伯语)这样的编码。在这种情况下,可以通过CHARACTER_SET编码提示将编码强制为UTF-8
EncodeHintType.AZTEC_LAYERS Integer
String
可以使用Integer或String,但是String必须是整数 指定Aztec code所需的层数。负数(-1、-2、-3、-4)指定一个紧凑的Aztec code。0表示使用最小层数(默认值)。正数(1,2,..32)指定一个普通的(非紧凑的)Aztec code。
EncodeHintType.QR_VERSION Integer
String
可以使用Integer或String,但是String必须是整数 指定要编码的QR码的确切版本。
EncodeHintType.QR_MASK_PATTERN Integer
String
可以使用Integer或String,但是String必须是整数 指定要使用的二维码掩码图案。允许的值为0到QRCode.NUM_MASK_PATTERNS-1。默认情况下,代码将自动选择最佳掩码模式。
EncodeHintType.QR_COMPACT Boolean
String
可以使用Boolean或String,但是String必须是"true" or "false" 指定二维码是否使用压缩模式。请注意,在执行压缩时,将为输入中不属于ISO-8859-1字符集的字符选择最紧凑的字符编码。根据经验,有些扫描仪不支持cp-1256(阿拉伯语)这样的编码。在这种情况下,可以通过CHARACTER_SET编码提示将编码强制为UTF-8。
EncodeHintType.GS1_FORMAT Boolean
String
可以使用Boolean或String,但是String必须是"true" or "false" 指定是否应该将数据编码为GS1标准。
EncodeHintType.FORCE_CODE_SET String 有效值为"A", "B", "C" 将使用哪种编码的力。目前仅用于code -128代码集(类型字符串)。此选项与CODE128_COMPACT互斥。
EncodeHintType.FORCE_C40 Boolean
String
可以使用Boolean或String,但是String必须是"true" or "false" 强制C40编码数据矩阵。这个选项和DATA_MATRIX_COMPACT是互斥的。
EncodeHintType.CODE128_COMPACT Boolean
String
可以使用Boolean或String,但是String必须是"true" or "false" 指定code -128代码是否使用紧凑模式。这可以产生略小的条形码。此选项和FORCE_CODE_SET是互斥的。

4.MultiFormatWriter(对条形码内容编码)

/*
 * 它为请求的BarcodeFormat查找适当的Writer子类,并用提供的内容对条形码进行编码。
 *
 * @param contents	条形码内容
 * @param format 	条形码格式
 * @param width		条形码宽度
 * @param height	条形码高度
 * @param hints		条形码图片自定义配置(非必填)
 * @return 条形码
 */
MultiFormatWriter writer = new MultiFormatWriter();
BitMatrix bitMatrix = writer.encode(content, format, width, height, hints);

5.MatrixToImageWriter(将BitMatrix写入BufferedImage、文件或流。)

//设置二维码颜色(非必填,默认黑白)
MatrixToImageConfig matrixToImageConfig = new MatrixToImageConfig(0xFF000000, 0xFFFFFFFF);
//将二维码转成图像缓冲区类
BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix);
BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix, matrixToImageConfig);
//将二维码写入文件中(writeToFile已不建议使用)
File file = new File("a.png");
MatrixToImageWriter.writeToFile(bitMatrix, "png", file);
MatrixToImageWriter.writeToFile(bitMatrix, "png", file, matrixToImageConfig);
MatrixToImageWriter.writeToPath(bitMatrix, "png", file.toPath());
MatrixToImageWriter.writeToPath(bitMatrix, "png", file.toPath(), matrixToImageConfig);
//将二维码写入流中
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
MatrixToImageWriter.writeToStream(bitMatrix, "png", outputStream);
MatrixToImageWriter.writeToStream(bitMatrix, "png", outputStream, matrixToImageConfig);

你可能感兴趣的:(java,java,zxing,二维码,条形码)