Python qrcode不一致

时间:2012-12-03 07:52:55

标签: python ubuntu qr-code

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

获取这些变量

2 个答案:

答案 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安装与其他框一致。