这篇文章是紧接着上一篇文章的:简单解析微信、支付宝,付款码的条形码生成原理
本文中,会演示如何使用上篇文章所讲到的条形码数据生成方法,使用lua语言来生成相关的数据
本文为了方便描述,同样使用b
代表一条黑色像素宽度的线,s
代表一条白色像素宽度的线,当bs
组合时,中间不留任何缝隙
首先我们先制作几个函数,来生成bs
字符串,以便后期生成条形码
首先声明我们需要用到的数据,编码格式:
1 | local codes = {} |
按C条形码生成规则,处理偶数长度的字符串:
1 | --生成code128C字符串 |
当出现奇数长度字符串时,按C+A拼接生成条形码,并且加入判断,字符串长度为偶数时,使用上面的函数处理:
1 | --生成code128C+A混合字符串,如长度为偶数,只生成C类型条码 |
这样,我们就可以得到类似于bsbbsbsbbbbbsbbbs...
这样的一串字符串了,接下来要实现显示功能,这里用到了合宙luat的disp库:
1 | --- code128 c型条形码显示函数,横向显示 |
为了方便,再加上一个显示数字的功能,字体需要按自己需求来准备:
1 | --摆放横向数字 |
最终效果如下: