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

一、引用maven依赖

<!-- https://mvnrepository.com/artifact/com.google.zxing/javase -->
<dependency>
  <groupId>com.google.zxing</groupId>
  <artifactId>javase</artifactId>
  <version>3.5.0</version>
</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.CODABARCodabar码
BarcodeFormat.CODE_39CODE-30码
BarcodeFormat.CODE_93CODE-93码
BarcodeFormat.CODE_128CODE-128码
BarcodeFormat.DATA_MATRIX矩阵式二维条码
BarcodeFormat.EAN_8EAN-8码
BarcodeFormat.EAN_13EAN-13码
BarcodeFormat.ITF交插二五条码
BarcodeFormat.MAXICODEMaxiCode二维条码
BarcodeFormat.PDF_417PDF417
BarcodeFormat.QR_CODE二维码
BarcodeFormat.RSS_14RSS 14
BarcodeFormat.RSS_EXPANDEDRSS EXPANDED
BarcodeFormat.UPC_AUPC A
BarcodeFormat.UPC_EUPC E
BarcodeFormat.UPC_EAN_EXTENSIONUPC EAN EXTENSION

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

keyvalueClassvalue描述
EncodeHintType.ERROR_CORRECTIONErrorCorrectionLevelErrorCorrectionLevel.L容错率~7%设置条形码识别容错率
ErrorCorrectionLevel.M容错率~15%
ErrorCorrectionLevel.Q容错率~25%
ErrorCorrectionLevel.H容错率~30%
EncodeHintType.CHARACTER_SETStringUTF-8、GBK、ASCI等字符编码,注:存在中文建议使用UTF-8
EncodeHintType.DATA_MATRIX_SHAPESymbolShapeHintSymbolShapeHint.FORCE_NONE默认形状设置条形码外形
SymbolShapeHint.FORCE_SQUARE正方形
SymbolShapeHint.FORCE_RECTANGLE矩形
EncodeHintType.DATA_MATRIX_COMPACTBoolean类型为Boolean,或“true”或“false”字符串值指定是否为数据矩阵使用紧凑模式
EncodeHintType.MARGINInteger
String
可以使用Integer或String,但是String必须是整数设置二维码的外边距
EncodeHintType.PDF417_COMPACTBoolean
String
可以使用Boolean或String,但是String必须是"true" or "false"指定PDF417是否使用紧凑模式
EncodeHintType.PDF417_COMPACTIONCompaction
String
Compaction.AUTO自动指定对PDF417使用的压缩模式
Compaction.TEXT文本
Compaction.BYTE字节
Compaction.NUMERIC数字
String必须和枚举值相同
EncodeHintType.PDF417_DIMENSIONSDimensionsnew Dimensions()指定PDF417的最小和最大行数和列数
EncodeHintType.PDF417_AUTO_ECIBoolean
String
可以使用Boolean或String,但是String必须是"true" or "false" 指定编码PDF417时是否自动插入eci。请注意,在这种情况下,将为输入中的不属于ISO-8859-1字符集的字符选择最紧凑的字符编码。根据经验,有些扫描仪不支持cp-1256(阿拉伯语)这样的编码。在这种情况下,可以通过CHARACTER_SET编码提示将编码强制为UTF-8
EncodeHintType.AZTEC_LAYERSInteger
String
可以使用Integer或String,但是String必须是整数指定Aztec code所需的层数。负数(-1、-2、-3、-4)指定一个紧凑的Aztec code。0表示使用最小层数(默认值)。正数(1,2,..32)指定一个普通的(非紧凑的)Aztec code。
EncodeHintType.QR_VERSIONInteger
String
可以使用Integer或String,但是String必须是整数指定要编码的QR码的确切版本。
EncodeHintType.QR_MASK_PATTERNInteger
String
可以使用Integer或String,但是String必须是整数指定要使用的二维码掩码图案。允许的值为0到QRCode.NUM_MASK_PATTERNS-1。默认情况下,代码将自动选择最佳掩码模式。
EncodeHintType.QR_COMPACTBoolean
String
可以使用Boolean或String,但是String必须是"true" or "false" 指定二维码是否使用压缩模式。请注意,在执行压缩时,将为输入中不属于ISO-8859-1字符集的字符选择最紧凑的字符编码。根据经验,有些扫描仪不支持cp-1256(阿拉伯语)这样的编码。在这种情况下,可以通过CHARACTER_SET编码提示将编码强制为UTF-8。
EncodeHintType.GS1_FORMATBoolean
String
可以使用Boolean或String,但是String必须是"true" or "false" 指定是否应该将数据编码为GS1标准。
EncodeHintType.FORCE_CODE_SETString有效值为"A", "B", "C" 将使用哪种编码的力。目前仅用于code -128代码集(类型字符串)。此选项与CODE128_COMPACT互斥。
EncodeHintType.FORCE_C40Boolean
String
可以使用Boolean或String,但是String必须是"true" or "false" 强制C40编码数据矩阵。这个选项和DATA_MATRIX_COMPACT是互斥的。
EncodeHintType.CODE128_COMPACTBoolean
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);
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值