【问题标题】:Most efficient method to store vCard data within an QR Code symbol [closed]在 QR 码符号中存储 vCard 数据的最有效方法 [关闭]
【发布时间】:2015-07-15 20:20:17
【问题描述】:

使用 JavaScript 在二维码中压缩 vCard 数据的有效方法是什么?我尝试了 lz-string 库,但是当我尝试对包含非法 UTF-16 字符的 QR 码进行编码时出现错误。有没有更好的办法?

【问题讨论】:

  • 目前所说的这个问题是题外话,因为它要求一种“更好”的方式,但我怀疑如果你要集中注意力,你可能会得到同样好的结果并使问题成为话题关于修复你在使用 lz-string 库时遇到的错误。

标签: javascript compression qr-code vcf-vcard


【解决方案1】:

如果要在开放式应用程序中读取 vCard,例如使用通用 QR 码阅读器,您不能简单地压缩输入数据并期望解码器弄清楚如何解压缩结果数据。

减小生成符号大小的一种方法是通过将自己限制为大写和数字字符旁边,确保编码器充分利用 QR 码的数字和字母数字编码模式(而不是切换到低效的字节编码模式)基本格式符号(如果可行的话)。但是,您将需要使用良好的 QR 码生成库来确定模式之间的最佳切换以最小化内部数据长度,以便从该技术中受益。[*]

如果您还没有这样做,您应该考虑将纠错级别降低到“L”。

最后,考虑使用更紧凑的 meCard 格式而不是 vCard。

如果预期用途是在封闭的应用程序中(尽管我看不到 vCard 的情况),您可以使用 GZIP 压缩 (RFC 1952) 并通过在数据前面加上 ECI 001800 指示符来指示这一点。在扫描时,您可以通过将支持 ECI 的阅读器置于扩展通道模式来可靠地确定 GZIP 压缩的使用,以检测 ECI 001800 指示器的存在并在您的应用程序中相应地解压缩。

[*] Barcode Writer in Pure JavaScript 是一个 JavaScript 库,可以对任何给定的 QR 码输入进行最佳编码,以提供尽可能小的符号。

【讨论】:

  • 你会推荐任何 JavaScript 库来实现这一点吗?
  • 我已经更新了答案,我建议将 BWIP-JS 作为提供输入数据最佳编码的 JS 库。您的应用程序必须根据 meCard 或 vCard 格式来构造输入数据。
猜你喜欢
  • 2017-01-06
  • 2020-08-10
  • 2017-08-06
  • 2015-03-04
  • 2022-01-24
相关资源
最近更新 更多