简单 C/C++ 二维码库






4.93/5 (31投票s)
如何使用 libqrencode 库生成二维码,并提供清晰的示例

引言
这是一个使用 FUKUCHI Kentaro 的 libqrencode 库生成包含特定文本二维码的 bmp 文件的简单示例。网上有很多关于此库的参考资料,但缺乏如何使用它的简单示例。在这个项目中,还提供了一种解决库在使用时出现问题的方案:这里直接包含源代码,以避免链接器冲突。
Libqrencode 支持 QR Code 模型 2,该模型在 JIS (日本工业标准) X0510:2004 或 ISO/IEC 18004 中有描述。目前,不支持以下功能:ECI 和 FNC1 模式 QR Code 模型 1。
背景
二维码是可以通过多种设备读取的双维码。如今,大多数智能手机都具有二维码阅读器。这种格式可以支持多种不同的数据类型:URL、联系人等。在此示例中,编码了一个 URL,您可以使用智能手机读取它,智能手机将自动连接到 Ultramundum Foundation 网站。用于二维码生成的最常用库是 Libqrencode,但其用法的简单示例,尤其是在 C/C++ 中,并不常见。文档仅由源代码中的注释和无用的 Doxygen 内容组成。我创建了一个简单的应用程序,将 URL 转换为保存到普通 Windows bmp 文件中的二维码。通过阅读这段代码,希望想要使用该库的人们,即使是在其他语言中,也能学习如何使用它以及如何将内部位图格式转换为标准的图形表示。
Using the Code
代码非常简单:有一个名为 QRGenerator.cpp 的主源代码文件,其中包含标准的 C main()
函数。示例应用程序是一个 Win32 控制台应用程序。通过更改 #defines
,可以重新编译程序以生成不同的 URL/输出文件/像素尺寸/像素颜色
#define QRCODE_TEXT "http://www.ultramundum.org/index.htm" // Text to encode into QRCode
#define OUT_FILE "C:/test.bmp" // Output file name
#define OUT_FILE_PIXEL_PRESCALER 8 // Prescaler (number of pixels
//in bmp file for each QRCode pixel, on each dimension)
#define PIXEL_COLOR_R 0 // Color of bmp pixels
#define PIXEL_COLOR_G 0
#define PIXEL_COLOR_B 0xff
...
关注点
最初,我尝试将库作为标准的 C 库使用,但链接器一直报告冲突函数的错误;因此,我直接将源代码包含到项目中并将其全部编译。
历史
- 首次发布 1.0
- 第二次发布 1.1,感谢所有贡献者。
- 第三次发布 1.2,发布版本也有效
许可证
libqrencode 库版权所有 (C) 2006-2012 Kentaro Fukuchi
本库是自由软件;您可以根据自由软件基金会发布的 GNU Lesser General Public License 的条款重新分发和/或修改它;可以是 License 的 2.1 版,也可以是任何后续版本。
本库的发布是为了希望它有用,但没有任何保证;甚至没有适销性和特定用途适用性的默示保证。有关更多详细信息,请参阅 GNU Lesser General Public License。
您应该已经收到本库随附的 GNU Lesser General Public License 的副本;如果没有,请致函自由软件基金会,地址为:51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA。
QR Code 是 DENSO WAVE INCORPORATED 在日本和其他国家/地区的注册商标。
Reed-Solomon 编码器由 Phil Karn, KA9Q 编写。
版权所有 (C) 2002, 2003, 2004, 2006 Phil Karn, KA9Q
RPM 包由 Katsumi Saito 完成。