2012-12-03 75 views
0

我有一個非常奇怪的問題python-qrcode蟒蛇qrcode不一致

我已經在我們的開發環境中工作了一段時間,沒有任何問題。我們使用它創建兩個QR碼,其中包含幾乎完全相同長度的URL(一個包含額外的字母和兩個額外的斜槓)。這兩個代碼的大小完全相同是至關重要的。

由於我們在5個月前安裝了python-qrcode,因此我們生成的每個qrcode的大小都一模一樣。但是,我們現在已經將所有內容都推送到生產服務器,並且突然出現問題。

基本上,我們生成的代碼之一是比正常大(這是三個額外的字符)。其他代碼是正確的大小。這兩個代碼使用完全相同的函數生成,我們只傳遞不同的URL進行編碼。

在我的本地機器和我們的開發服務器上,所有qrcode的大小完全相同(包括帶有額外字符的大小),但在生產服務器上,較長的一個更大,而另一個正確。

我們使用Git版本控制,所以所有的文件/功能等在服務器之間是相同的。設置之間的唯一區別是Ubuntu的版本(生產服務器上的12.04 vs 12.10),但我不明白爲什麼會導致此問題。

如果兩個代碼都比較大,我可以理解,但是我不知道爲什麼只有一個服務器會比另​​一個更大......?

如果有人可以提出任何建議,從哪裏開始工作,我會非常感激!

編輯:

下面是相關代碼:

myQrGenerator = qrcode.QRCode(
    version=QRCODE_SIZE, 
    error_correction=qrcode.constants.ERROR_CORRECT_M, 
    box_size=QRCODE_BOX_SIZE, 
    border=QRCODE_BORDER_SIZE 
) 

myQrGenerator.add_data('%s%s/' % (theBaseUrl, str(theHash))) 
myQrGenerator.make(fit=True) 

我們得到這些變量從local_settings.py

+0

當你說「大小」,你的意思是生成的圖像的文件大小? – soulseekah

+0

對不起 - 是的。由此產生的圖像大小,邊緣到邊緣。 – Erve1879

+0

請顯示相關代碼,即您如何使用python-qrcode的API。 – soulseekah

回答

1

經過漫長的討論後,確定兩臺服務器使用不同的URL。一個發出較大的QR碼(用QR像素表示,隨後用圖像像素表示)溢出的地方,它可以存儲預定義大小的位數的限制是不夠的,並且qrcode通過增加它可以存儲的數據量。

爲了解決這個問題,fit被設置爲False以提供溢出限制,並且增加了從一開始就容納更多位的限制。box_size可以稍微減少一點,以保持或多或少的原始圖像大小。

+0

soulseekah:legend。感謝你的幫助!!! – Erve1879

0

可能的方式PIL一個區別是,安裝在包裝盒上。縱觀python-qrcode source,它的作用:

try: 
    from PIL import Image, ImageDraw 
except ImportError: 
    import Image, ImageDraw 

見當你這樣做會發生什麼:

from PIL import Image, ImageDraw 

在每一臺機器。無論哪種方式,如果它真的不是應用程序代碼中的錯誤(確保每個盒子上都有相同的代碼),這聽起來像是因爲PIL在Ubuntu 12.10和12.04上自己構建的方式有所不同,可能是由於它用於編譯的一些不同的頭文件/庫。注意確保PIL安裝與其他盒子一致。

+0

謝謝Purrell - 大概我需要在python shell中?當我在Python shell中運行它時,我沒有得到任何迴應(錯誤或其他方式) – Erve1879