我编写了一些代码,根据要编码的字符,所需的边距和EC级别,输出符合标准兼容QR码所需的最小像素数。但是,我收到来自Google的空白图片回复,而不是有效的QR码。
可能的最小QR码是29x29像素版本1 QR码(21个编码模块+每侧4个模块边距)。 example
根据Google Charts QR code documentation,您在EC级别H的第1版QR码中可以拥有的最大0-9位数为17.但是,指定参数results in a blank image;无论choe
参数设置为什么;因为有更多的数据被编码而不适合。
将字符数减少到14 results in a valid QR code。
那么,有没有人知道Google Charts API在每个给定版本和EC级别可以编码多少数据?是字符字节依赖吗?我的代码是用Java编写的,但如果需要,任何编程语言的解决方案就足够了。
希望我做错了,或者有一些可以遵循的逻辑,而不是QR码的“足够好”的实现。
答案 0 :(得分:1)
对此没有正式答案。由于API现已弃用,因此不太可能出现答案,或者修复错误。你最好使用zxing代替它,因为它仍在开发中并且不会受到上述问题的影响。
答案 1 :(得分:0)
生成的图像的大小(以像素为单位)与此无关。您正在查看和生成的所有QR码均有效。
版本1 QR码可以使用数字模式匹配17位数,是的。
我认为Chart Server的实现在这里是错误的。它正在使用数字模式,但是输入的填充字节比我认为必要的更多,这使得它使用版本2.
您在zxing中看到的版本实际上是相同的基本编码器代码,但我认为它实际上是更新的,也许比这个源于2006年的实现更为固定。(我不是虽然知道,但不再在里面了。)
如果使用ECI段以字节模式指定UTF-8编码,则UTF-8有效。但这很少做得很好。 zxing支持它。
在实践中,您会发现以字节模式放入QR码的所有类型的东西 - Shift_JIS,UTF-8等等。 zxing(和其他人)会在很多时候正确地猜测它。图表服务器AFAIK将在必要时使用UTF-8,因为它无法在默认的ISO-8859-1中合法编码。这不是问题所在。
我认为Chart Server与规范所规定的限制相差几个字节。规范是ISO 18004:2006。它为您提供了所有版本,模式和EC级别的所有限制。
AFAIK zxing做对了,它是Java。