吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1401|回复: 0
收起左侧

[C&C++ 原创] C++实现header-only二维码生成器

[复制链接]
caozhanhao 发表于 2023-4-22 12:59

特性

  • header-only
  • 接口简单,易于使用

使用示例

  // 添加数据
  QR qr1("https://github.com/caozhanhao/opqr");
  QR qr2(std::vector<int>{0, 1, 2, 3});//or other containers, e.g. std::list
  QR qr3;
  qr3.add_data({4, 5, 6, 7});// initializer_list
  // 指定参数
  qr3.set_version(10);
  qr3.set_level(ECLevel::L);
  qr3.set_mode(Mode::NUM);
  qr3.set_mask(6);
  // 或
  QR qr4(20, ECLevel::Q, Mode::ALNUM, 0);

  // 二维码标准要求二维码Quiet Zone,即在周围有白边,这里也可以关闭
  qr3.disable_quiet_zone();

  // 输出,这里提供两种方式调整图片尺寸
  // 第一种直接在原二维码的基础上扩大(`enlarge`倍),不用stb缩放
  // - paint(fmt, path/ostream, enlarge)         -> (QR dimension * enlarge) * (QR dimension * enlarge)
  // 第二种方式通过stb缩放
  // - paint(fmt, path/ostream, width, height)   -> width * height
  qr1.generate().paint(pic::Format::JPG, "examples/example3.jpg", 512, 512);
  qr2.generate().paint(pic::Format::PNG, "examples/example1.png", 10);
  qr3.generate().paint(pic::Format::ANSI256, std::cout, 2);

更多示例,见main.cpp

输出格式

  • JPG
  • PNG
  • TGA
  • BMP
  • ANSI (可输出到终端, 即上例中qr3输出到std::cout)

依赖

  • stb (用来生成图片,也是header-only)
  • C++ 17

更多

  • 项目地址(github):  https://github.com/caozhanhao/opqr
  • 在做这个库的时候搜集了很多资料,并且整理成了一篇文章,其中涵盖二维码生成的大部分细节,有条件的也可以自己实现一个。
  • 这个库的Kanji编码模式可能有bug, 不过可以用8-bit模式替代。如果有了解Kanji的大佬欢迎提交PR.

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表