Python qrcode不一致

2024-09-29 22:20:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python-qrcode有个很奇怪的问题。在

我已经让它在我们的开发环境中运行了一段时间,没有任何问题。我们用它来创建两个QR码,两个QR码都包含几乎完全相同长度的url(一个包含一个额外的字母和两个额外的斜杠)。这两个代码的大小必须完全相同。在

自从我们大约五个月前安装了pythonqrcode以来,我们生成的每一个qrcode都是完全相同的大小。然而,我们现在已经把所有的东西都推到了生产服务器上,突然出现了一个问题。在

基本上,我们生成的代码中有一个比正常代码大(这是带有三个额外字符的代码)。另一个代码的大小是正确的。这两个代码是使用完全相同的函数生成的,我们只是传递不同的URL进行编码。在

在我的本地机器和dev服务器上,所有qrcode的大小都完全相同(包括带有额外字符的qrcode),但是在生产服务器上,较长的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)

我们从局部变量中得到这些变量_设置.py在


Tags: 函数代码服务器url编码size字母字符
2条回答

经过长时间的讨论,确定这两个服务器使用不同的url。喷出更大的QR码(以QR像素为单位,随后又以图像像素为单位)溢出,它可以存储预定义大小的比特的限制是不够的,qrcode通过增加它可以存储的数据量使其适合。在

为了解决这个问题,fit被设置为False来为溢出提供约束,并且增加{}以从一开始容纳更多的位。box_size可以稍微减小一点,以或多或少地保持原始图像的大小。在

可能是PIL安装在盒子上的方式不同。看看python-qrcode source,它确实:

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

看看你做了什么:

^{pr2}$

在每台机器上。不管怎样,如果它真的不是应用程序代码中的一个bug(确保每个框上都有相同的代码),这听起来好像是因为PIL在ubuntu12.10 vs 12.04上构建自己的方式有些不同,可能是因为它编译时使用了一些不同的头/库。检查确保PIL安装与其他箱子一致。在

相关问题 更多 >

    热门问题