Zxing Web使用base64填充对Aztec代码进行解码,但是3.4.0广口瓶找不到条形码

时间:2020-04-28 21:41:47

标签: zxing

运行最新的Java版本会在图像上产生“找不到条形码”。

java -cp core-3.4.0.jar:javase-3.4.0.jar:jcommander-1.72.jar:jai-imageio-core-1.4.0.jar com.google.zxing.client.j2se.CommandLineRunner --try_harder ./IMG.jpg 文件:///home/tom/Projects/mTicketing/zxing_java/./IMG.jpg:未找到条形码

但是,使用网站https://zxing.org/w/decode并使用相同的图像会产生:

eyJ2ZXJzaW9uIjoidGZpLjEiLCJhbGciOiJSUzI1NiIsImFjdCI6IjIwMjAtMDQtMjhUMDc6NTc6NDYrMDE6MDAifQ ==。eyJkdXIiOiJQVDkwTSIsIm9wIjoiQnVzIEVpcmVhbm4iLCJwciI6IlNpbmdsZSBKb3VybmV5IFRpY2tldCBBZHVsdCIsImZyb20iOiJDbGFyZWNhc3RsZSIsInRvIjoiU2hhbm5vbiBJbmR1c3RyaWFsIEVzdC4iLCJybiI6IjExMjE5IiwiYW4iOiJUb20gQnlybmUiLCJ1dG4iOiI2OTE2NDQzOC02M2RkLTRhY2YtOGZlNS01MjUyMjZmYjhmOTcifQ.Aw_3tELIvR6EqatwR-QxwXC5V1F7Cznr0FfZkl8O8SIYzwcOyJ_coCqBs_2UKMghv0WVNAXikHmavMqLLEaug2H41ElFs48lBz8yEgsCsrbeau2AWDd14KixsfITx3rps9HqMf-aPxb5B3Dw6vYFh2Gnokb1Dhbqfhb1a5j5UJI

但是,如果从JWT令牌('==')的标头中删除了base64填充并生成了QR码,则站点和Java代码都会成功解码条形码。

我知道应该使用Base64Url,但是为什么zxing站点而不是最新的jar文件成功解码了图像?

为什么填充会产生难以解码的图像?

1 个答案:

答案 0 :(得分:0)

因此,在进行了更多研究之后,我很确定我注意到的问题与编码数据的长度和显示Aztec代码的设备的分辨率有关,而与填充无关。

随着编码数据长度的增加,Aztec QR码的视觉复杂性也随之增加。我发现如果我使用较低分辨率的设备或故意将设备的屏幕分辨率设置为较低,则无法可靠地解码更复杂的代码。

ZXING站点与Java代码之间存在一些差异,但我怀疑该站点可能已预先配置了一组解码提示。