如何使用ZXing.Net强制生成正方形的Data Matrix码?
ZXing.Net生成正方形Data Matrix码解决方案
码形差异原因
Data Matrix ECC 200标准本身支持正方形和矩形两种码形,ZXing.Net默认会根据输入内容的长度自动匹配容量最合适的码形版本:当内容长度匹配正方形版本容量时输出正方形,匹配矩形版本容量时就会输出扁平矩形,属于默认自动适配的正常表现。
强制生成正方形的方法
可以通过编码配置强制指定码形为正方形,无需修改输入内容,核心配置为DatamatrixEncodingOptions的SymbolShape参数,示例代码如下:
using ZXing; using ZXing.Datamatrix; using ZXing.Common; // 配置编码参数 var encodeOptions = new DatamatrixEncodingOptions { // 强制输出正方形码形 SymbolShape = DataMatrixSymbolShape.ForceSquare, // 可选:限定正方形的尺寸范围,避免内容过长导致生成失败 MinSize = new Dimension(10, 10), MaxSize = new Dimension(144, 144), ECC = 200 }; // 初始化条码生成器,此处Bitmap可根据你实际使用的渲染载体替换 var barcodeWriter = new BarcodeWriter<Bitmap> { Format = BarcodeFormat.DATA_MATRIX, Options = encodeOptions }; // 生成条码 var resultBitmap = barcodeWriter.Write("待编码的文本内容");
注意事项
- 强制正方形模式下,如果输入内容的长度超过你配置的最大正方形版本的可容纳上限,会抛出编码错误,需要根据业务场景的输入长度上限提前设置合理的
MaxSize参数。 - 如果你使用的是较老版本的ZXing.Net,
SymbolShape的枚举值可能命名不同,找不到ForceSquare时可以查找对应版本中表示强制正方形的枚举项即可。
内容的提问来源于stack exchange,提问作者Aidal
相关产品推荐
相关产品推荐

