Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建二维码的库_Java_Python_Qr Code_Libs - Fatal编程技术网

Java 创建二维码的库

Java 创建二维码的库,java,python,qr-code,libs,Java,Python,Qr Code,Libs,我需要一个二维码库,只编码数值。只有数值的二维码最多可存储7089个字符,字母数字-4296。据我所搜索的,我可以找到只编码字母数字或二进制值的libs。除了一个BarcodeLib:这真的很昂贵 所以我需要一个免费的库,它只能对数字数据进行编码,最多可以存储7089位数字。 最有用的是java库,但Python或.NET也很受欢迎。 < P>我知道QR代码库起源于日本,C++中,一个拷贝是在Github中查找KuaPayIOS源代码…包中嵌入了一个QRDraw文件夹,其中包含6个源代码 您感兴

我需要一个二维码库,只编码数值。只有数值的二维码最多可存储7089个字符,字母数字-4296。据我所搜索的,我可以找到只编码字母数字或二进制值的libs。除了一个BarcodeLib:这真的很昂贵

所以我需要一个免费的库,它只能对数字数据进行编码,最多可以存储7089位数字。
最有用的是java库,但Python或.NET也很受欢迎。

< P>我知道QR代码库起源于日本,C++中,一个拷贝是在Github中查找KuaPayIOS源代码…包中嵌入了一个QRDraw文件夹,其中包含6个源代码

您感兴趣并且最终通过某种方式调用的是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级别(里德-所罗门误差校正级别),在本例中为M(RS误差校正) 0是QR版本S(小尺寸?) true是自动扩展的布尔值 和-1是一个模糊的参数,称为masking_no,我还没有弄清楚它如何适合所有这些,str是你想要创建一个二维码的字符串

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

因此,您的问题的答案是-如果这是作为SDK其余部分基础的实际日文代码,那么只需确保您传递的字符串是真正的数字,它就会计算出来并允许传递更长的字符串。您可能希望使用版本2(L),尽管不建议您将EC级别降低到L(0)要减少冗余并增加最大字符数(ps),您引用的数字需要EC/L


我希望这会有所帮助

我自己从未尝试过,但如果您找到了可以对任意二进制数据进行编码的库,并且您可以控制读取应用程序,那么您始终可以对整数进行编码/解码