python-qrcode我遇到了一个非常奇怪的问题。
我已经在我们的开发环境中工作了一段时间,没有任何问题。我们用它来创建两个QR码,这两个QR码都包含几乎完全相同的URL(一个包含一个额外的字母和两个额外的斜杠)。这两个代码的大小完全相同至关重要。
由于我们在大约五个月前设置了python-qrcode,因此我们生成的每个qrcode都具有完全相同的大小而且没有失败。但是,我们现在已将所有内容推送到生产服务器,突然间我们遇到了问题。
基本上,我们生成的代码之一比普通代码大(这是带有三个额外字符的代码)。其他代码是正确的大小。这两个代码使用完全相同的函数生成,我们只传递不同的URL进行编码。
在我的本地计算机和我们的开发服务器上,所有qrcode的大小完全相同(包括带有额外字符的那个),但在生产服务器上,较长的一个较大而另一个正确。
我们使用Git版本控制,因此服务器之间的所有文件/功能都是相同的。设置之间的唯一区别是Ubuntu的版本(生产服务器上的12.04和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 :(得分:1)
经过长时间的讨论,确定两台服务器使用了不同的URL。喷出更大的QR码(就QR像素而言,随后在图像像素方面)溢出的那个,其中可以存储的预定义大小的位数限制是不够的,并qrcode
使它成功通过增加它可以存储的数据量来适应。
要解决此问题,fit
设置为False
以提供溢出约束,version
已增加,以便从一开始就容纳更多位。 box_size
可以减少一点,以保持原始图像大小或多或少。
答案 1 :(得分: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 vs 12.04上构建自身的方式有所不同,可能是由于它用于编译的一些不同的头/库。考虑确保PIL安装与其他框一致。