【Python】URLをQRコードに変換するプログラム

テクノロジー
スポンサーリンク

はじめに

URLからQRコードを生成したかったのですが,よくわからないサイトのサービスを使いたくなかったのでPythonで自作しました.”qrcode”というライブラリを使えば簡単にできます.

スポンサーリンク

Anaconda仮想環境

Anaconda仮想環境の構築

以下の通り,Python3.8で作ってます.

3行目のqrcode[pil]の[pil]はqrcodeライブラリの追加オプションで,これによりPIL(Python Imaging Library)またはその後継であるpillowが依存関係としてインストールされます.PILやpillowは,Pythonで画像の生成や処理を行うためのライブラリです.
qrcodeライブラリを使用してQRコードを画像として生成・保存する場合,pillowが必要です.[pil]オプションを指定することで,qrcodeと一緒にpillowもインストールされ、画像としてのQRコードの生成や操作が可能になります。

4行目はJupyterを使うためにipykernelをインストールしています.Jupyterを使わない人はなくても大丈夫でしょう.

conda create --name qr_env python=3.8
conda activate qr_env
pip install qrcode[pil]
conda install ipykernel

結果として,qr_envの内訳(インストールされているパッケージとそのバージョン等)は以下の通りです.

# packages in environment at C:\Users\*******\anaconda3\envs\qr_env:
#
# Name                    Version                   Build  Channel
asttokens                 2.0.5              pyhd3eb1b0_0
backcall                  0.2.0              pyhd3eb1b0_0
ca-certificates           2023.08.22           haa95532_0
cffi                      1.15.1                   pypi_0    pypi
colorama                  0.4.6            py38haa95532_0
comm                      0.1.2            py38haa95532_0
cryptography              41.0.4                   pypi_0    pypi
debugpy                   1.6.7            py38hd77b12b_0
decorator                 5.1.1              pyhd3eb1b0_0
executing                 0.8.3              pyhd3eb1b0_0
importlib-metadata        6.0.0            py38haa95532_0
importlib_metadata        6.0.0                hd3eb1b0_0
ipykernel                 6.25.0           py38h9909e9c_0
ipython                   8.12.2           py38haa95532_0
jedi                      0.18.1           py38haa95532_1
jupyter_client            8.1.0            py38haa95532_0
jupyter_core              5.3.0            py38haa95532_0
libffi                    3.4.4                hd77b12b_0
libsodium                 1.0.18               h62dcd97_0
matplotlib-inline         0.1.6            py38haa95532_0
nest-asyncio              1.5.6            py38haa95532_0
openssl                   3.0.11               h2bbff1b_2
packaging                 23.1             py38haa95532_0
parso                     0.8.3              pyhd3eb1b0_0
pickleshare               0.7.5           pyhd3eb1b0_1003
pillow                    10.0.1                   pypi_0    pypi
pip                       23.2.1           py38haa95532_0
platformdirs              3.10.0           py38haa95532_0
prompt-toolkit            3.0.36           py38haa95532_0
psutil                    5.9.0            py38h2bbff1b_0
pure_eval                 0.2.2              pyhd3eb1b0_0
pycparser                 2.21                     pypi_0    pypi
pygments                  2.15.1           py38haa95532_1
pyopenssl                 23.2.0                   pypi_0    pypi
pypng                     0.20220715.0             pypi_0    pypi
python                    3.8.18               h1aa4202_0
python-dateutil           2.8.2              pyhd3eb1b0_0
pywin32                   305              py38h2bbff1b_0
pyzmq                     25.1.0           py38hd77b12b_0
qrcode                    7.4.2                    pypi_0    pypi
setuptools                68.0.0           py38haa95532_0
six                       1.16.0             pyhd3eb1b0_1
sqlite                    3.41.2               h2bbff1b_0
stack_data                0.2.0              pyhd3eb1b0_0
tornado                   6.3.2            py38h2bbff1b_0
traitlets                 5.7.1            py38haa95532_0
typing-extensions         4.8.0                    pypi_0    pypi
typing_extensions         4.7.1            py38haa95532_0
vc                        14.2                 h21ff451_1
vs2015_runtime            14.27.29016          h5e58377_2
wcwidth                   0.2.5              pyhd3eb1b0_0
wheel                     0.38.4           py38haa95532_0
zeromq                    4.3.4                hd77b12b_0
zipp                      3.11.0           py38haa95532_0

Pythonコード

URLを入力として,そのURLのQRコードを画像(pngファイル)として出力するPythonプログラムのコードは以下の通りです.サンプルとして,google.comに跳べるQRコードを生成するプログラムになっています.このプログラムを実行すると,pythonファイルが置いてあるのと同じディレクトリにQRコードの画像ファイル(qr.png)が保存されます.問題なく動くことが確認できたら,下から2行目の”https://www.google.com”を好きなサイトのURLに変更してみましょう.

import qrcode

def generate_qr_code(url, filename="qr.png"):
    # QRコードのインスタンスを生成
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4,
    )
    qr.add_data(url)
    qr.make(fit=True)

    # QRコードを画像として生成
    img = qr.make_image(fill_color="black", back_color="white")

    # 画像を保存
    img.save(filename)

if __name__ == "__main__":
    url_to_encode = "https://www.google.com"  # ここに生成したいURLを入力
    generate_qr_code(url_to_encode)

おわりに

以上です.良いPythonライフを!

コメント

タイトルとURLをコピーしました