2012-05-27 64 views
2

我已經寫了一些代碼,輸出所需的最小像素數,以適應符合標準的QR碼,給定要編碼的字符,所需的邊距和EC等級。不過,我收到來自Google的空白圖片回覆,而不是有效的QR碼。Google Chart QR代碼的實際字符限制是什麼?

可能的最小QR碼是29x29像素版本1 QR碼(每邊21個編碼模塊+ 4個模塊邊距)。 example

1 char QR code

按照Google Charts QR code documentation的0-9位的最大數目可以有在EC H級的版本1 QR碼是17.但是,指定的參數作爲這樣results in a blank image;不管choe參數設置爲什麼;因爲有更多的數據被編碼比可以適合。

Should be valid but blank

減少的字符數到14 results in a valid QR code

Must reduce digits to work

因此,沒有任何人有任何想法多少數據可以通過谷歌圖表API在每個給定的版本和ec電編碼?它是否與字符字節相關?我的代碼是用Java編寫的,但如果需要的話,任何編程語言的解決方案都足夠了。

希望我做了一些錯誤的事,或者有一些可以遵循的邏輯,而不是QR碼的「足夠好」實現。

回答

1

對此沒有正式答案。由於API現在已經被棄用,答案不可能出現,或者錯誤會被修復。你最好用zxing來代替它,因爲它還在開發中,並且不會遇到上述問題。

0

生成圖像的像素大小在此不相關。您看到並生成的所有QR碼都是有效的。

版本1 QR碼可以適合17位數字,使用數字模式,是的。

我認爲圖表服務器的實現在這裏根本就是錯誤的。它是利用數字模式,但在更多的填充字節是把比我認爲是必要的,這使得它使用2版。

zxing看到的版本實際上是相同的基本編碼器的代碼,但我認爲它實際上是更新,也許是比這個實現起始於2006年的固定。(我不知道是否已經不在內部)

如果您使用ECI分段來使用UTF-8,在字節模式下指定UTF-8編碼。但這很少做對。 zxing支持它。

實際上,您可以在字節模式下找到所有種類的QR碼(Shift_JIS,UTF-8,更多)。 zxing(和其他人)會在很多時候正確地猜出它。圖表服務器AFAIK將在必要時使用UTF-8,因爲它不能在默認的ISO-8859-1下合法編碼。雖然這不是問題。

我認爲圖表服務器是從規範的限制幾個字節。規格是ISO 18004:2006。它爲您提供所有版本,模式和EC級別的所有權限。

AFAIK zxing做對了,它是Java。

+0

您的憑據讓我相信這不太可能得到比您更好的答案。不幸的是,它不提供我之後的信息。像素是相關的,表明應該有圖像顯示。以上所有qr碼都應該是有效的,但不是。 1個空白和2個反鋸齒圖像不是有效的qr碼。我一直在使用規格中的數據,但仍然會從Google獲得空白或大小不一的圖片,而且應該採用不同的模式。我希望有人能告訴我Google的規則,而不是規範。現在api已經被棄用了,我想我應該只用zxing來代替。 – nosilleg

+0

僅供參考:剛剛發現上面只有1個qr代碼是無效的,反鋸齒是由於我的Chrome被放大到一個級別而引起的,這似乎是代碼變得不可用的唯一縮放級別。 – nosilleg

+0

我沒有從您的鏈接中獲得空白圖像,也沒有發生過別名。圖表服務器不會反這些AFAIK。我也使用Chrome。我想這是一個本地設置/網絡問題。你不會找到記錄的「規則」,因爲它們應該等同於規範。我知道代碼是舊的,不要期望zxing的修復會回到它,所以如果它關閉了一兩個字節也不會感到驚訝。事實上,我記得很久以前就解決了這個問題。但是,主要的是,Chart Server在我的經驗中正常工作。不記得任何重大的錯誤。 –

相關問題