はじめに
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ライフを!
コメント