我正在使用这个Delphi单元。我不得不使用这个老的Delphi实现,所以不要问这个问题:https://github.com/foxitsoftware/DelphiZXingQRCode
它产生的QR码被任何解码器解码都很好,只要我把纠错级别保持在“低”。如果我增加纠错级别,产生的代码就不能被我迄今为止尝试过的任何解码器解码。但我被迫(根据一个标准)使用中纠错级别,不多不少。
但是,如何提高纠错级别(从现在开始是ecl)还不清楚。我假设它被硬编码在文件DelphiZXingQRCode的第3491行:Level.FBits:= 1.我找到了一些关于十六进制数表示ecl的信息,但现在找不到了。但我尝试将这些十六进制数作为位,QR码上的ecl位也相应地发生了变化。所以我假设这些十六进制数是正确的(1=低,0=中,2=高,3=四分位)。
下面是一个QRcode的例子,Level.FBits:= 2,意思是我希望ecl是“High”。内容是“Hello world”。中间的十字图像是我必须实现的标准的一部分,所以不要问这个。
有人知道如何修复这个问题吗?我试过......嗯......我试过理解代码,但是代码太多了。我就是无法修复它。如果我无法让其他人修复它,我将不得不......找到其他解决方案。这将是一个问题。
1条答案
按热度按时间bvpmtnay1#
已解决。请参阅下面的代码。方法GenerateQRCode()现在需要ErrorCorrectionLevel的参数:整数0-3。看起来有效。我不得不删除一些未更改的行,因为文件对于StackOverflow来说太大了。请自己合并。