首页 > 解决方案 > Zxing web 使用 base64 填充对 Aztec 代码进行解码,但 3.4.0 jar 没有找到条码

问题描述

运行最新的 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 file:///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 文件?

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

标签: zxing

解决方案


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

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

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


推荐阅读