用于创建QR码的库

时间:2013-01-28 13:48:07

标签: java python qr-code libs

我需要QR码库才能只编码数值。只有数字值的QR码最多可以存储7089个字符,字母数字 - 4296.据我所知,我可以找到能够只编码字母数字或二进制值的库。除了一个 - BarcodeLib:http://www.barcodelib.com/这是非常昂贵的。

所以我需要免费的库,它只能编码数字数据并存储多达7089个数字。 最有用的是java库,但也欢迎python或.net的。

1 个答案:

答案 0 :(得分:1)

据我所知,QR码库起源于日本,并且是用C ++编写的,副本在Github中寻找Kuapay IOS源代码.....包中嵌入的是一个带有6个源代码的QRDraw文件夹,< / p>

你感兴趣的那个和你最终通过某种方式调用的那个是QR_Encode,如果你看一下标题(QR_Encode.h),你可以看到以下内容:

===============
// åÎÇËí˘ê≥ÉåÉxÉã
   #define QR_LEVEL_L   0
   #define QR_LEVEL_M   1
   #define QR_LEVEL_Q   2
   #define QR_LEVEL_H   3

 // ÉfÅ[É^ÉÇÅ[Éh
    #define QR_MODE_NUMERAL  0
    #define QR_MODE_ALPHABET    1
    #define QR_MODE_8BIT     2
    #define QR_MODE_KANJI    3

// ÉoÅ[ÉWÉáÉì(å^î‘)ÉOÉãÅ[Év
  #define QR_VRESION_S  0 // 1 Å` 9
  #define QR_VRESION_M  1 // 10 Å` 26
  #define QR_VRESION_L  2 // 27 Å` 40

  #define MAX_ALLCODEWORD    3706 
      // ëçÉRÅ[ÉhÉèÅ[Éhêîç≈ëÂíl
  #define MAX_DATACODEWORD 2956 
     // ÉfÅ[É^ÉRÅ[ÉhÉèÅ[Éhç≈ëÂíl(ÉoÅ[ÉWÉáÉì40-L)
  #define MAX_CODEBLOCK   153 
     //  ÉuÉçÉbÉNÉfÅ[É^ÉRÅ[ÉhÉèÅ[Éhêîç≈ëÂíl(ÇqÇrÉRÅ[ÉhÉèÅ[ÉhÇä‹Çfi)
  #define MAX_MODULESIZE      177 
      // àÍï”ÉÇÉWÉÖÅ[Éãêîç≈ëÂíl

  #define QR_MARGIN 4

评论是日文的,因此根据我在源代码中理解的内容,需要一段时间才能收集内容

通过以下命令调用编码过程:

CQR_Encode encoder;
encoder.EncodeData(1, 0, true, -1, str);

(1实际上是指QR水平(Reed Solomon误差校正水平),在这种情况下是M(RS误差校正) 0是QR版本S(小尺寸?) true是自动扩展的布尔值 -1是一个名为masking_no的模糊参数,我仍然没有弄清楚它是如何适合所有这些参数的,而str是你想要创建QR码的字符串。

从源代码中,它实际上计算字符串以检查它是否是数字,字母(全部大写),汉字或8位(混合大写),然后决定最大长度和编码/压缩方法。

所以你的问题的答案是 - 如果这是实际的日语代码,它是SDK的其余部分的基础,那么只需确保你传递的字符串是真正的数字,它会弄清楚它并允许传递更长的字符串。您可能希望使用版本2(L),虽然不可取,但您可能希望将EC级别降低到L(0)以减少冗余并增加最大字符数(ps引用的数字需要EC为L. / p>

我希望这会有所帮助

相关问题