0

python-qrcodeで非常に奇妙な問題が発生しました。

私はそれを私たちの開発環境でしばらくの間問題なく動作させてきました。これを使用して、ほぼ同じ長さのURLを含む2つのQRコードを作成します(1つには追加の文字と2つの追加のスラッシュが含まれます)。これらの2つのコードが正確に同じサイズであることが重要です。

約5か月前にpython-qrcodeを設定して以来、生成したすべてのqrcodeは必ず同じサイズになっています。ただし、すべてを本番サーバーにプッシュしたため、突然問題が発生しました。

基本的に、生成するコードの1つは通常よりも大きくなります(これは3文字余分に含まれるコードです)。他のコードは正しいサイズです。2つのコードはまったく同じ関数を使用して生成され、エンコードする異なるURLを渡すだけです。

私のローカルマシンと開発サーバーでは、すべてのqrcodeはまったく同じサイズです(余分な文字を含むものを含む)が、本番サーバーでは、長い方が大きく、もう一方は正しいです。

Gitバージョン管理を使用しているため、すべてのファイル/機能などはサーバー間で同一です。セットアップの唯一の違いはUbuntuのバージョン(本番サーバーでは12.04と12.10)ですが、なぜそれがこの問題を引き起こすのかわかりません。

両方のコードが大きければ理解できますが、1台のサーバーだけで一方が他方よりも大きくなる理由がわかりません。

誰かがこれをどこから始めるべきかについて何か提案をすることができれば、私は非常に感謝するでしょう!

編集:

関連するコードは次のとおりです。

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から取得します

4

2 に答える 2

1

長い議論の末、2つのサーバーが異なるURLを使用していることが判明しました。より大きなQRコード(QRピクセル、続いて画像ピクセル)を吐き出したものがオーバーフローし、事前定義されたサイズに対して保存できるビットの制限が不十分でありqrcode、量を増やすことで適合させました保存できるデータの量。

これを修正するために、オーバーフローの制約を提供するようfitに設定され、最初からより多くのビットに対応するように増加されました。元の画像サイズを多かれ少なかれ維持するために、少し小さくすることができます。Falseversionbox_size

于 2012-12-03T09:48:34.500 に答える
0

おそらく、PILがボックスにインストールされる方法の違いです。python-qrcodeソースを見ると、次のようになります。

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

あなたがするときに何が起こるかを見てください:

from PIL import Image, ImageDraw

各マシンで。いずれにせよ、それが実際にアプリケーションコードのバグではない場合(各ボックスに同じコードがあることを二重に確認してください)、PILがUbuntu12.10と12.04でビルドする方法にいくつかの違いがあるためと思われます。おそらく、コンパイルに使用するいくつかの異なるヘッダー/ライブラリが原因です。PILのインストールが他のボックスと一致していることを確認してください。

于 2012-12-03T08:34:45.743 に答える