zxing设置条码两边空白(EncodeHintType.MARGIN)无效的分析

最新项目需要使用到zxing生成条码,条码格式为CODE128,CODE128的规则可参考:点击打开链接

当调用

MultiFormatWriter().encode(str,BarcodeFormat.CODE_128, mwidth, mHeight, hints)
       后生成的矩阵数据转换为Bitmap图时,会产生很大的左右两边的空白,zxing提供了 EncodeHintType.MARGIN选项来设置左右空白,很多时候无效,但偶然会成功,很困惑,所以追踪了一下代码,明白了其生成的原理,现以源码解析的方式整理如下。

此处,以类似“901001*C005”格式的内容来分析,编码格式为CODE128。

       1、

BitMatrix matrix = new MultiFormatWriter().encode(str,BarcodeFormat.CODE_128, mwidth, mHeight, hints);
此处没什么讲的生成条码/二维码的核心代码,zxing使用方法可以去百度/谷歌。

2、追踪encode函数,其原型MultiFormatWriter.java中,代码如下:

public BitMatrix encode(String contents,
                          BarcodeFormat format,
                          int width, int height,
                          Map<EncodeHintType,?> hints) throws WriterException {

    Writer writer;
    switch (format) {
      case EAN_8:
        writer = new EAN8Writer();
        break;
  
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值