精易论坛

标题: 纯算法二维码生成模块,不联网,非dll,没有API [打印本页]

作者: dulang    时间: 2017-3-24 14:33
标题: 纯算法二维码生成模块,不联网,非dll,没有API

       闲来无事,弄了个二维码模块玩玩,纯本地算法生成,非调用dll,也不用联网,有兴趣的可以研究一下用到的算法。

       废话不多说,先上几张图片再说。有图有真相。


二维码模块演示例程.zip (106.81 KB, 下载次数: 2162)

作者: dulang    时间: 2017-3-24 14:38
源码已经打包,百度盘下载地址:https://pan.baidu.com/s/1hrCrGfa 密码: rtqh
作者: ye来哥    时间: 2017-3-26 13:51
那一年的雪花飘舞,梅花落枝头~

作者: lzhaitao    时间: 2017-3-27 10:42
感谢分享源码!
作者: ck66    时间: 2017-3-27 10:50
如何做到的了 厉害了
作者: 小熊君    时间: 2017-3-27 19:54
感谢楼主 无私分享。
作者: sunmoonstar    时间: 2017-3-28 11:50
这个必须顶
作者: dulang    时间: 2017-3-28 16:01
ck66 发表于 2017-3-27 10:50
如何做到的了 厉害了

有了算法,你也可以写出来。
跟程序一步步走两遍就清楚了。
作者: liu2220    时间: 2017-3-28 17:15
这个值得学习下。谢谢分享
作者: 韦贝贝    时间: 2017-4-1 11:19
可惜没有识别
作者: zhang11966    时间: 2017-4-2 01:12
学习下66666666666
作者: zdfans    时间: 2017-4-2 10:59
好 谢谢分享 感谢开源~
作者: 隔世經年    时间: 2017-4-8 15:15
这个厉害了,我的哥!希望能出个识别。
作者: xf1917    时间: 2017-4-8 17:58
不错,正好需要
作者: 进击    时间: 2017-4-9 16:36
本帖最后由 鲲鹏 于 2017-4-9 16:41 编辑

原来已经是开源的了!感谢!

测试可以生成中文二维码,谢谢~~

另外不知道是否研究过加入LOGO机制呢?@dulang
还有一块是关于识别的

作者: 958829253    时间: 2017-4-9 20:49
        感谢发布原创作品,一定好好学习,天天向上
作者: 风之潮    时间: 2017-4-10 11:56
正好需要,下来看看
作者: dulang    时间: 2017-4-11 14:25
看到有几个人问识别部分代码,我也看到了。首先感谢大家的关注,只不过最近工作比较忙,过段时间会抽时间补上的
作者: dulang    时间: 2017-4-11 14:26
看到有几个人问识别部分代码,我也看到了。首先感谢大家的关注,只不过最近工作比较忙,过段时间会抽时间补上的
作者: dulang    时间: 2017-4-13 23:49
韦贝贝 发表于 2017-4-1 11:19
可惜没有识别

最近比较忙,过段时间会补上识别
作者: 7ian    时间: 2017-4-21 10:40
赞一个!!!
作者: dulang    时间: 2017-4-25 10:30
anata 发表于 2017-4-21 10:40
赞一个!!!

多谢打赏,正在研究识别算法,写完后也会放出源码给大家的
作者: 倾风听雨声    时间: 2017-4-26 15:58
楼主研究个易语言版本的zxing吧 比较实在 精确度又高
作者: jmf117    时间: 2017-5-7 12:41
        感谢分享,收益很多!!!!!!!!!1
作者: wjc826194    时间: 2017-5-12 23:37
感谢 分享 希望顺手再写个识别的。。。。
作者: 千千万是福朋友    时间: 2017-5-16 11:37
mark感谢楼主无私分享
作者: kenny8848    时间: 2017-5-16 11:41
mark感谢楼主无私分享
作者: 请叫我宇哥    时间: 2017-6-6 18:52

作者: 铁树开花了    时间: 2017-6-10 08:30
学习,感谢分享
作者: 老黑123    时间: 2017-6-12 04:33
正好想学习二维码的东西
作者: bbs592    时间: 2017-6-17 00:14
希望你能有logo跟识别~~谢谢~~  
作者: 影知    时间: 2017-8-8 14:01
我看我早晚要用的上的
作者: xxhaishixx    时间: 2017-8-13 00:19
好厉害,支持了
作者: zhihua    时间: 2017-8-23 18:14
不错,正需要用呢
作者: 坐观君    时间: 2017-8-26 23:10
感谢楼主,楼主万岁
作者: love355024    时间: 2017-9-20 02:39
楼主真帅,感谢分享~
作者: yesezz    时间: 2017-10-7 03:54
谢谢分享,正好用来学习ha
作者: lkj1993    时间: 2017-10-12 23:58
二维码,好东西,收藏了
作者: 雨潇    时间: 2017-10-24 20:47
这个可以有。。。必须有
作者: 686898    时间: 2017-11-2 11:56
666666可以的
作者: 吾剑乄无心    时间: 2017-11-15 14:22
感谢分享~~~~~~
作者: 花开一半    时间: 2017-11-15 19:07
谢谢分享啊
作者: 雨潇    时间: 2017-11-23 22:06
这个已经很牛了。
作者: tianmenghuan    时间: 2017-11-29 16:12
只为学习而来
作者: hhhql    时间: 2017-12-2 18:57
只为学习而来
作者: anying860452    时间: 2017-12-4 19:49
这个已经很牛了。
作者: zhiqiang    时间: 2017-12-31 13:09
666!很好的东西 收藏了

作者: panchao126    时间: 2018-1-8 04:31
666!很好的东西 收藏了
作者: honshe    时间: 2018-1-20 02:26
谢谢分享啊
作者: lghathz    时间: 2018-1-21 18:21
不错,下来看看。
作者: fenli    时间: 2018-2-6 15:42
不错,下来看看。
作者: 特超级大忽悠    时间: 2018-2-12 23:03
学习一下。。。
作者: yxl2008    时间: 2018-3-4 06:44
不错,下来看看。
作者: polaris    时间: 2018-3-28 20:14
谢谢。谢谢。学习了。
作者: 阿斯顿132    时间: 2018-4-2 17:27
反手就是一个赞
作者: 火威网络    时间: 2018-4-2 18:02
好东西,收下了
作者: xueyi08    时间: 2018-4-4 09:50
不错,下来看看。
作者: tianxi    时间: 2018-4-10 20:48
不联网 不调用dll 就能生成和解码???
作者: dulang    时间: 2018-4-11 10:32
tianxi 发表于 2018-4-10 20:48
不联网 不调用dll 就能生成和解码???

能生成,没有写解码部分,没时间写
作者: 面具,    时间: 2018-4-11 16:03

作者: 清泽    时间: 2018-4-27 22:10
不错6666666
作者: aolonglg    时间: 2018-5-7 18:04
不错,下来看看。
作者: long467899509    时间: 2018-5-11 15:57
看到你这样的我就是一个赞!
作者: Aust    时间: 2018-5-14 02:31
找的就是纯算法!
作者: 天堂鸟528    时间: 2018-6-19 17:32
确实是好东西!!!!!
作者: abcmiao    时间: 2018-6-20 21:27
感谢楼主的分享
作者: gowy111    时间: 2018-6-22 11:25
那解码呢?
作者: 610100    时间: 2018-8-3 22:43
有bug,不清楚是不是我个人使用不当

纯数字时转换的二维码不正确,用QQ扫一扫得到的结果不一样
目前解决方法,在输入的文本后面加上个空格,生成的二维码就是正确的

如有错误,请大佬指出
谢谢楼主这么好的模块,期待解码模块

作者: lcm1999    时间: 2018-8-10 09:55
666666666666666666
作者: ghjdyy    时间: 2018-8-16 18:44
谢谢分享哟
作者: 大怪兽    时间: 2018-8-19 00:46
大神,膜拜,不错,直接调用。ec文件而且还有例子,谢谢!
作者: 江湖小坏坏    时间: 2018-8-24 23:31
学习了,好东西`````````````````````
作者: 空手道    时间: 2018-9-5 13:45
找的就是纯算法!
作者: 冰晶中的雪    时间: 2018-9-13 10:13
拿走学习~~LZ辛苦了
作者: wangzi1017    时间: 2018-9-13 13:28
研究半天,二维码颜色可以选择了,但白边大小不知道在哪儿改?能不能指教下??

搜狗截图20180913132333.png (35.15 KB, 下载次数: 1)

搜狗截图20180913132333.png

作者: dulang    时间: 2018-9-14 14:44
wangzi1017 发表于 2018-9-13 13:28
研究半天,二维码颜色可以选择了,但白边大小不知道在哪儿改?能不能指教下??

这个方法里【渲染结果】
  
子程序名返回值类型公开备 注
渲染结果字节矩阵类 renderResult()
参数名类 型参考可空数组备 注
参_QRCode二维码类
参_宽度整数型
参_高度整数型
变量名类 型静态数组备 注
原始矩阵字节矩阵类 
缩放矩阵字节矩阵类 
矩阵数据字节型1,1
矩阵宽度  
矩阵高度  
留边宽度  
留边高度  
目标宽度  
目标高度  
缩放倍数  
左右边距  
上下边距  
左右偏移  
上下偏移  
i  
j  
k  
l  
b字节型 
原始矩阵 = 参_QRCode.取矩阵 ()
矩阵宽度 = 原始矩阵.取宽度 ()
矩阵高度 = 原始矩阵.取高度 ()
留边宽度 = 矩阵宽度 + #QUIET_ZONE_SIZE
留边高度 = 矩阵高度 + #QUIET_ZONE_SIZE
目标宽度 = 选择 (参_宽度 > 留边宽度, 参_宽度, 留边宽度)
目标高度 = 选择 (参_高度 > 留边高度, 参_高度, 留边高度)
缩放倍数 = 选择 (目标宽度 ÷ 留边宽度 < 目标高度 ÷ 留边高度, 目标宽度 ÷ 留边宽度, 目标高度 ÷ 留边高度)
左右边距 (目标宽度 - 矩阵宽度 × 缩放倍数) ÷ 2
上下边距 (目标高度 - 矩阵高度 × 缩放倍数) ÷ 2
缩放矩阵.字节矩阵 (目标宽度, 目标高度)
矩阵数据 = 原始矩阵.取字节矩阵 ().字节型数组
计次循环首 (矩阵高度, i)
左右偏移 = 左右边距
上下偏移 = 上下边距 ��� (i - 1) × 缩放倍数
计次循环首 (矩阵宽度, j)
b = 选择 (矩阵数据 [i] [j] = 1, 1, 0)
计次循环首 (缩放倍数, k)
计次循环首 (缩放倍数, l)
缩放矩阵.置值 (左右偏移 + k - 1, 上下偏移 + l - 1, b)
计次循环尾 ()
计次循环尾 ()
左右偏移 = 左右边距 + j × 缩放倍数
计次循环尾 ()
计次循环尾 ()
' 数组 = 缩放矩阵.取字节矩阵 ().字节型数组
' 输出调试文本 (矩阵到文本 (缩放矩阵.取字节矩阵 (), 3))
返回 (缩放矩阵)


作者: dulang    时间: 2018-9-14 14:46
wangzi1017 发表于 2018-9-13 13:28
研究半天,二维码颜色可以选择了,但白边大小不知道在哪儿改?能不能指教下??
  
子程序名返回值类型公开备 注
渲染结果字节矩阵类 renderResult()
参数名类 型参考可空数组备 注
参_QRCode二维码类
参_宽度整数型
参_高度整数型
变量名类 型静态数组备 注
原始矩阵字节矩阵类 
缩放矩阵字节矩阵类 
矩阵数据字节型1,1
矩阵宽度  
矩阵高度  
留边宽度  
留边高度  
目标宽度  
目标高度  
缩放倍数  
左右边距  
上下边距  
左右偏移  
上下偏移  
i  
j  
k  
l  
b字节型 
原始矩阵 = 参_QRCode.取矩阵 ()
矩阵宽度 = 原始矩阵.取宽度 ()
矩阵高度 = 原始矩阵.取高度 ()
留边宽度 = 矩阵宽度 + #QUIET_ZONE_SIZE
留边高度 = 矩阵高度 + #QUIET_ZONE_SIZE
目标宽度 = 选择 (参_宽度 > 留边宽度, 参_宽度, 留边宽度)
目标高度 = 选择 (参_高度 > 留边高度, 参_高度, 留边高度)
缩放倍数 = 选择 (目标宽度 ÷ 留边宽度 < 目标高度 ÷ 留边高度, 目标宽度 ÷ 留边宽度, 目标高度 ÷ 留边高度)
左右边距 (目标宽度 - 矩阵宽度 × 缩放倍数) ÷ 2
上下边距 (目标高度 - 矩阵高度 × 缩放倍数) ÷ 2
缩放矩阵.字节矩阵 (目标宽度, 目标高度)
矩阵数据 = 原始矩阵.取字节矩阵 ().字节型数组
计次循环首 (矩阵高度, i)
左右偏移 = 左右边距
上下偏移 = 上下边距 ��� (i - 1) × 缩放倍数
计次循环首 (矩阵宽度, j)
b = 选择 (矩阵数据 [i] [j] = 1, 1, 0)
计次循环首 (缩放倍数, k)
计次循环首 (缩放倍数, l)
缩放矩阵.置值 (左右偏移 + k - 1, 上下偏移 + l - 1, b)
计次循环尾 ()
计次循环尾 ()
左右偏移 = 左右边距 + j × 缩放倍数
计次循环尾 ()
计次循环尾 ()
' 数组 = 缩放矩阵.取字节矩阵 ().字节型数组
' 输出调试文本 (矩阵到文本 (缩放矩阵.取字节矩阵 (), 3))
返回 (缩放矩阵)


作者: dulang    时间: 2018-9-14 14:51
wangzi1017 发表于 2018-9-13 13:28
研究半天,二维码颜色可以选择了,但白边大小不知道在哪儿改?能不能指教下??

【渲染结果】这个方法里,渲染就是把编码后的矩阵按一定的比例放大成一张图片的像素点矩阵,然后给像素点矩阵上色(给个rgb值)就是位图像素,加上位图文件头就是一张bmp格式的位图了。
作者: wangzi1017    时间: 2018-9-14 16:08
dulang 发表于 2018-9-14 14:44
这个方法里【渲染结果】
[e=1].版本 2

我知道在这里但不知道该哪里,要不小了,要不就是太大了,要不就是偏移了
作者: dulang    时间: 2018-9-18 23:25
wangzi1017 发表于 2018-9-14 16:08
我知道在这里但不知道该哪里,要不小了,要不就是太大了,要不就是偏移了

举个例子,你编码出来的矩阵是30*30的,而你要创建的图片是200*200的,怎么弄呢?

先把你的矩阵放大,放大几倍呢?用200整除30得6,余20。这个没问题吧?那么你就把矩阵放大6倍,白边留20/2=10,这样,你所得到的图片就是一个10px边框的图片,矩阵每个值对应一个6*6的像素方块(就是二维码里的最小黑块)。

定了宽度和高度就不能设置白边宽度了,想设置固定白边宽度就不要定图片的宽度高度,先把矩阵放大后,加上固定白边就可以了

不知道我讲明白了没有,你自己再研究下代码
作者: xueyi08    时间: 2018-9-27 22:55
下来用一用
作者: wo844426286    时间: 2018-9-30 22:09
下载看看。。切克闹
作者: hzq8109    时间: 2018-10-9 18:28
亲爱的dulang,感谢您。
作者: hzq8109    时间: 2018-10-12 22:08
这个怎样能去掉二维码的白边呢? 搞了好久搞不明白,能指点下吗? 非常感谢。
作者: 暖心ken    时间: 2018-10-19 14:19
厉害的                        
作者: 默念、    时间: 2018-10-26 10:18
有识别的吗??
作者: huajidaxia    时间: 2018-11-24 17:15
厉害的 !!!!
作者: zhaona    时间: 2018-12-22 11:22
希望你能有logo跟识别~~谢谢
作者: lss01    时间: 2018-12-26 21:29
看看。。切克闹
作者: wangqimin    时间: 2018-12-27 16:37
太棒了!!!!
作者: 17839710626    时间: 2018-12-27 22:09
66666666666666666666666
作者: hktk7340    时间: 2019-2-7 21:55
二维码生成有错。。。。
作者: lxh1230    时间: 2019-3-12 12:03
支持源码  下载学习
作者: 531826228    时间: 2019-3-14 16:34
多谢分享,学习学习!
作者: lvzanhe    时间: 2019-3-19 09:58
楼主十分厉害!!!正需要

请问四周的白边能不能减少些呢?感觉太宽了。
作者: nmrenjunyi    时间: 2019-3-23 22:47
感谢楼主 无私分享。
作者: hjdnwx    时间: 2019-3-27 23:37
0000000000000000000000000000000
作者: xushuyi    时间: 2019-4-8 11:55
很需要这个模块,谢谢分享
作者: 遵义静以修身    时间: 2019-4-11 16:30
厉害了大牛们
作者: y99650    时间: 2019-4-24 03:48
支持支持。。。。。。。。。。。。。。。。。。。。




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4