精易论坛

标题: 基于zxing-cpp封装的本地二维码生成及识别 [打印本页]

作者: 阿婆    时间: 2021-11-5 20:56
标题: 基于zxing-cpp封装的本地二维码生成及识别
由于做项目需要用到二维码识别相关功能,论坛搜了一圈,识别功能只找到了一个基于zxing的封装,无奈作者只封装了识别部分,并没有封装二维码生成功能,还有其他也有一些林林总总的模块,或多或少都有一些问题,比如不支持中文,不能识别微信二维码,不支持图片矫正等问题,最主要好巧不巧都不同时具备二维码生成和识别功能,于是只好自己封装个凑活先用了,顺便来开源大赛凑个热闹,望坛友们多多支持
zxing-cpp项目地址  https://github.com/nu-book/zxing-cpp


直接上代码

  
DLL命令名返回值类型公开备 注
QrEncode逻辑型 
DLL库文件名:
zxing.dll
在DLL库中对应命令名:
@QrEncode
参数名类 型传址数组备 注
text文本型
filePath文本型二维码图片路径,支持jpg\png
width整数型二维码图片宽度
height整数型二维码图片高度
margin整数型二维码图片白边宽度
eccLevel整数型纠错级别0-8,-1默认
DLL命令名返回值类型公开备 注
QrDecode文本型 
DLL库文件名:
zxing.dll
在DLL库中对应命令名:
@QrDecode
参数名类 型传址数组备 注
filePath文本型二维码图片路径
angleEscape逻辑型Escape解码


  
窗口程序集名保 留  保 留备 注
程序集1   
子程序名返回值类型公开备 注
_启动子程序整数型 请在本子程序中放置易模块初始化代码
_临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
返回 (0)  ' 可以根据您的需要返回任意数值
子程序名返回值类型公开备 注
_临时子程序  
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
调试输出 (QrEncode (“你好,易语言!”, 取运行目录 ()“\helloe.png”, 500, 500, 20, 8))
调试输出 (QrDecode (取运行目录 ()“\weixin.png”, ))


i支持库列表   支持库注释   
spec特殊功能支持库


dll及示例

Demo.zip (807.29 KB, 下载次数: 753)

zxing-cpp集成dll项目的解决方案,可直接编译(vs2019)文件太大,上个网盘链接


https://share.weiyun.com/jRxf9UGq












补充内容 (2021-11-6 22:27):
小更新以下,感谢6、7楼建议,
二维码创建支持返回字节集
二维码识别支持传入字节集,并返回坐标
进一步简化封装,详见指定楼


补充内容 (2021-11-6 22:32):
错别字!!!!详见置顶楼

补充内容 (2021-11-6 22:34):
不能编辑帖子好麻烦!!!!新版下载也在置顶楼 !!!!!!

QQ截图20211105201337.png (24.29 KB, 下载次数: 62)

QQ截图20211105201337.png

作者: xh1020    时间: 2021-11-5 22:11
整好需要呀,赶上趟了
作者: 皮卡秋    时间: 2021-11-6 01:30
我一直以为只有c#原版呢{:3_41:}
作者: wuqingg    时间: 2021-11-6 08:49
感谢分享,很给力!~
作者: 夜的静night    时间: 2021-11-6 08:55
很需要这个。。。
作者: qq2518    时间: 2021-11-6 08:58
感谢分享。支持开源
作者: zhangjun1314    时间: 2021-11-6 09:49
能改一下,支持传入字节集吗?
路径不方便使用
作者: izzhqnys    时间: 2021-11-6 10:24
解析二维码的时候,可以返回二维码的坐标吗
作者: chenliben    时间: 2021-11-6 10:33
感谢分享,很给力!
作者: 阿婆    时间: 2021-11-6 10:41
zhangjun1314 发表于 2021-11-6 09:49
能改一下,支持传入字节集吗?
路径不方便使用

很有必要,可以尝试下,感谢反馈
作者: 阿婆    时间: 2021-11-6 10:44
izzhqnys 发表于 2021-11-6 10:24
解析二维码的时候,可以返回二维码的坐标吗

可以  原版是支持一图多码的 也支持坐标和红线图框出二维码位置,出于便捷,简化了结果,可以尝试额外封装一个跟原版一样返回结果的扩展函数,感谢反馈
作者: q1012789582    时间: 2021-11-6 10:56
vs2019?        感谢分享,很给力!~
作者: 风林听雨    时间: 2021-11-6 11:09
支持一下
作者: 外星星人    时间: 2021-11-6 12:00
        感谢分享,很给力!~
作者: sinewtec    时间: 2021-11-6 15:09
支持一下,谢谢分享!
作者: 梦°    时间: 2021-11-6 20:38
服务器2012上不能调用,是缺少什么组件吗。
作者: 阿婆    时间: 2021-11-6 21:08
梦° 发表于 2021-11-6 20:38
服务器2012上不能调用,是缺少什么组件吗。

详见https://github.com/nu-book/zxing-cpp
Make sure a C++17 compliant compiler is installed (minimum VS 2019 16.8 / gcc 7 / clang 5)


安装下最新的vc运行库试试

https://docs.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-160
作者: 阿婆    时间: 2021-11-6 22:31
小更新以下,感谢6、7楼建议,
二维码创建支持返回字节集
二维码识别支持传入字节集,并返回坐标
进一步简化封装,详见置顶楼


Demo2.zip (632.67 KB, 下载次数: 873)


  
窗口程序集名保 留  保 留备 注
IQrcode  ZXing
子程序名返回值类型公开备 注
_初始化 当基于本类的对象被创建后,此方法会被自动调用

子程序名返回值类型公开备 注
_销毁 当基于本类的对象被销毁前,此方法会被自动调用

子程序名返回值类型公开备 注
EncodeToFile逻辑型 成功返回真 失败返回假
参数名类 型参考可空数组备 注
text文本型二维码文本内容
filePath文本型二维码图片路径,支持jpg\png
width整数型二维码图片宽度
height整数型二维码图片高度
margin整数型二维码图片白边宽度
eccLevel整数型纠错级别0-8,-1默认
width = 选择 (是否为空 (width), 500, width)
height = 选择 (是否为空 (height), 500, height)
margin = 选择 (是否为空 (margin), 20, margin)
eccLevel = 选择 (是否为空 (eccLevel), -1, eccLevel)
返回 (QrEncodeToFile (text, filePath, width, height, margin, eccLevel) > 0)
子程序名返回值类型公开备 注
EncodeToMemory字节集 成功返回PNG图片数据 失败返回{}
参数名类 型参考可空数组备 注
text文本型二维码文本内容
width整数型二维码图片宽度
height整数型二维码图片高度
margin整数型二维码图片白边宽度
eccLevel整数型纠错级别0-8,-1默认
变量名类 型静态数组备 注
png字节集 
len整数型 
width = 选择 (是否为空 (width), 500, width)
height = 选择 (是否为空 (height), 500, height)
margin = 选择 (是否为空 (margin), 20, margin)
eccLevel = 选择 (是否为空 (eccLevel), -1, eccLevel)
png = 取空白字节集 (20480)
len = QrEncodeToMemory (text, png, width, height, margin, eccLevel)
如果 (len > 0)
返回 (取字节集左边 (png, len))
返回 ({ })

子程序名返回值类型公开备 注
DecodeFromFile文本型 返回识别的二维码文本内容
参数名类 型参考可空数组备 注
filePath文本型二维码图片路径
angleEscape逻辑型Escape解码
postionPosition二维码区域坐标
返回 (QrDecodeFromFile (filePath, angleEscape, postion))
子程序名返回值类型公开备 注
DecodeFromMemory文本型 返回识别的二维码文本内容
参数名类 型参考可空数组备 注
imageData字节集二维码图片路径
angleEscape逻辑型Escape解码
postionPosition二维码区域坐标
返回 (QrDecodeFromMemory (imageData, 取字节集长度 (imageData), angleEscape, postion))

作者: 梦°    时间: 2021-11-7 00:27
没看见置顶楼...
作者: 阿婆    时间: 2021-11-7 07:05
梦° 发表于 2021-11-7 00:27
没看见置顶楼...

回复审核有点慢  刚刚才置顶
作者: amycarl    时间: 2021-11-7 09:53
多谢分享
作者: duanyijun    时间: 2021-11-7 10:13
这个收下了
作者: 学习无止境呀    时间: 2021-11-7 17:27
感谢分享,很给力!~
作者: a3780586510    时间: 2021-11-7 18:06
线程安全怎么样呢
作者: q1012789582    时间: 2021-11-7 22:24
D:\Workspace\cpp\zxing-cpp\build\core\Debug\ZXing.lib   缺这个文件???
作者: xjshuaishuai    时间: 2021-11-8 11:51
感谢楼主分享!
作者: 阿婆    时间: 2021-11-8 18:28
q1012789582 发表于 2021-11-7 22:24
D:\Workspace\cpp\zxing-cpp\build\core\Debug\ZXing.lib   缺这个文件???

没明白,麻烦说具体点
作者: q1012789582    时间: 2021-11-8 19:23
阿婆 发表于 2021-11-8 18:28
没明白,麻烦说具体点

q:1012789582 细聊
作者: glxmfyx    时间: 2021-11-9 09:55
不错,感谢分享
作者: 夜的静night    时间: 2021-11-9 11:19
q1012789582 发表于 2021-11-8 19:23
q:1012789582 细聊

我编译也说缺少这个DLL  怎么解决的
作者: zhangjun1314    时间: 2021-11-11 12:00
阿婆 发表于 2021-11-6 22:31
小更新以下,感谢6、7楼建议,
二维码创建支持返回字节集
二维码识别支持传入字节集,并返回坐标

感谢更新,很好用
作者: 阿婆    时间: 2021-11-13 16:55
夜的静night 发表于 2021-11-9 11:19
我编译也说缺少这个DLL  怎么解决的

试试先生成ALL——BULID   再生成ZXingDLL
作者: 夜的静night    时间: 2021-11-13 17:18
阿婆 发表于 2021-11-13 16:55
试试先生成ALL——BULID   再生成ZXingDLL

额 试了  还是不行 放弃了
作者: 251766117    时间: 2021-11-14 15:33
好东西,终于能支持内存解码,编码了~~论坛所有的都是文件路径解码,气死了
作者: 杨道义    时间: 2021-11-20 20:31
非常好 加油
作者: xnf    时间: 2021-11-20 21:28
谢谢大佬
作者: 2161045897    时间: 2021-11-27 16:26
感谢分享~~~~~~~~~
作者: 飞宇    时间: 2021-12-4 12:08
阿婆 发表于 2021-11-6 22:31
小更新以下,感谢6、7楼建议,
二维码创建支持返回字节集
二维码识别支持传入字节集,并返回坐标

中文识别 前面好像多了个问号?
作者: zhaobiao    时间: 2021-12-6 11:09
64位 dll在哪下载
作者: 流失    时间: 2021-12-16 12:56
感谢更新,很好用
作者: CaringGuy    时间: 2022-1-7 18:58
下载个试试看
作者: xuanfei    时间: 2022-1-10 13:19
感谢楼主分享,谢谢学习
作者: 唐宇薄荷    时间: 2022-1-10 19:05
感谢更新,很好用
作者: 易开小白    时间: 2022-1-11 15:53
您好 楼主 字节集的识别快还是文本路径的识别快?
作者: 易开小白    时间: 2022-1-11 16:01
楼主 您好 字节集的识别快还是文本路劲的快一些?
作者: xiao6666    时间: 2022-1-11 22:32
感谢分享,很给力!~
作者: gdj528    时间: 2022-1-20 15:03
作者,你好,之前一直没问题,今天重装了易语言,提示【指定Dll命令名称“QrEncodeToFile”未找到。】,这是为什么呢?其他命令都没问题的。
作者: 阿婆    时间: 2022-1-23 16:20
易开小白 发表于 2022-1-11 16:01
楼主 您好 字节集的识别快还是文本路劲的快一些?

都是zxing原生函数 理论上应该是字节集比较快些 毕竟少了读取文件的时间
作者: 阿婆    时间: 2022-1-23 16:21
gdj528 发表于 2022-1-20 15:03
作者,你好,之前一直没问题,今天重装了易语言,提示【指定Dll命令名称“QrEncodeToFile”未找到。】,这 ...

应该是dll版本不对把 下载置顶楼的压缩包
作者: 易开小白    时间: 2022-1-24 23:09
阿婆 发表于 2022-1-23 16:20
都是zxing原生函数 理论上应该是字节集比较快些 毕竟少了读取文件的时间

是的   已经测试过
作者: hizdf    时间: 2022-1-27 20:50
谢谢分享
作者: 四川小白菜    时间: 2022-2-2 22:13
路过看看
作者: 怡君大哥    时间: 2022-2-22 16:28
2012服务器提示找不到dll命令  怎么解决
作者: zxcv1234    时间: 2022-3-10 16:24
6666666666666666666666666666666666666666666666666
作者: starfee    时间: 2022-3-12 15:50
chaojihaoyong !
作者: 272765632    时间: 2022-3-14 10:40
找了一圈二维码的demo,就你这个最还用!代码简单,没那么繁琐,内存消耗也低!
作者: xtavoxing    时间: 2022-4-6 00:16
这个后面还有更新吗?
作者: 旭哥520    时间: 2022-4-8 17:14
感谢分享!!
作者: sna520    时间: 2022-4-11 02:05
66666666666666666666666666666666666666
作者: sna520    时间: 2022-4-11 02:07
63333333333333333333333333333
作者: fjcq    时间: 2022-4-22 14:28
楼主可以使用stdcall调用方式编译一下吗?你这样编译的dll,内存加载会导致程序崩溃。
作者: ghost12    时间: 2022-5-3 12:01
很好很强悍,坚持下去哦~
作者: 离几尺┏╮    时间: 2022-5-13 01:00
牛 牛 牛 牛 牛 ...
作者: 离几尺┏╮    时间: 2022-5-15 07:55
怡君大哥 发表于 2022-2-22 16:28
2012服务器提示找不到dll命令  怎么解决

装VC+++运行库
作者: 奕奕微笑    时间: 2022-5-17 17:39
好吧,必须好好学习啊!
作者: kncte111    时间: 2022-7-18 18:21

感谢分享!!
作者: dingdadas    时间: 2022-10-9 15:35
好吧,必须好好学习啊!
作者: dingdadas    时间: 2022-10-9 15:35
牛 牛 牛 牛 牛 ...
作者: dingdadas    时间: 2022-10-10 22:13
windows server2012r2 ,无法找到指定DLL库文件“zxing.dll”中的输出命令“QrDecodeFromFile”,已经安装了64位的c++运行库,也重启了,还是不行,各位大佬清楚怎么回事吗?
作者: 沁语    时间: 2022-10-25 01:21
66666666666666666666666
作者: 沁语    时间: 2022-10-25 01:22
6666666666666666666666666
作者: brave09    时间: 2022-10-25 16:41
内存不足咋解决
作者: a951281437    时间: 2022-10-25 20:53
666666666666666666666666666666
作者: tyler998    时间: 2022-10-26 17:38
支持开源~!感谢分享
作者: lzx964753100    时间: 2022-11-9 19:49
dingdadas 发表于 2022-10-10 22:13
windows server2012r2 ,无法找到指定DLL库文件“zxing.dll”中的输出命令“QrDecodeFromFile”,已经安装 ...

俺也一样
作者: 沁语    时间: 2022-11-13 16:19
6666666666666666666
作者: 低调小兵    时间: 2022-12-2 12:07
dingdadas 发表于 2022-10-10 22:13
windows server2012r2 ,无法找到指定DLL库文件“zxing.dll”中的输出命令“QrDecodeFromFile”,已经安装 ...

我也是这个情况  解决了没
作者: szy2870    时间: 2022-12-5 14:37
不错可以,生成速度很快!!!
作者: jy96520    时间: 2023-4-3 17:52
感谢分享
作者: kncte111    时间: 2023-4-5 18:59
6666666666666666666666666

作者: yzz110299    时间: 2023-5-29 23:57
kncte111 发表于 2023-4-5 18:59
6666666666666666666666666

666666666666666666666
作者: lrs8899    时间: 2023-6-8 09:05
试试怎么样
作者: lrs8899    时间: 2023-6-9 09:20
挺好的,谢谢
作者: Canada    时间: 2023-6-11 17:03
有没有最新的dll
作者: 乐小游    时间: 2023-6-24 15:47
VX新版二维码识别不出来怎么搞
作者: xiaolei11    时间: 2023-7-14 03:19
11111111111111111
作者: xiaolei11    时间: 2023-7-14 03:19
1111111111111111111111111
作者: 空竹    时间: 2023-7-15 15:22
开源精神必须支持~
作者: 56766876    时间: 2023-7-26 22:23
大佬 改造成支持库吧
作者: 搜迪斯内    时间: 2023-8-18 03:24

开源精神必须支持~
作者: 472448760    时间: 2023-8-19 10:50
大哥 编译个64位的撒
作者: zhaode2888    时间: 2023-8-27 11:43
谢谢分享
作者: 学会就发了    时间: 2023-9-10 13:41
        支持开源~!感谢分享
作者: fancs123    时间: 2023-9-19 08:42
感谢分享
作者: 林一学编程    时间: 2023-9-26 21:52
感谢分享,很给力!~
作者: 林一学编程    时间: 2023-9-26 21:53
感谢分享,很给力!~
作者: futiem    时间: 2023-10-7 19:33
感谢分享感谢分享
作者: 要强不要秃    时间: 2023-10-7 23:19
感谢分享感谢分享
作者: saochun    时间: 2023-11-4 16:50
感谢分享
作者: duisir    时间: 2023-12-15 12:18
66666666666666666666666666666666666666666666666




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