ChatGPTにQRコードを生成するPythonコードを書いてもらった

ChatGPTに任意の文字列(URLとか)を埋め込んだQRコードを生成するPythonコードを書いてもらいました。

 

指示文(プロンプト):

指定した文字列からQRコード画像を生成するPythonのコードを書いてください。データと生成するQRコードの画像名は、標準入力から引数として渡せるようにしてください。

 

回答:

以下は、Pythonのqrcodeライブラリを使用して指定した文字列からQRコード画像を生成する基本的なコードです。


import sys
import qrcode

def generate_qr_code(data, file_name):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4,
    )
    qr.add_data(data)
    qr.make(fit=True)
    
    img = qr.make_image(fill_color="black", back_color="white")
    img.save(file_name)

# コマンドライン引数からデータとファイル名を取得
data = sys.argv[1]
file_name = sys.argv[2]
generate_qr_code(data, file_name)

    

上記のコードでは、generate_qr_code関数を定義し、dataとfile_nameを引数として受け取ります。dataはQRコードエンコードする文字列です。

file_nameは生成されたQRコード画像の保存先ファイル名です。 qrcode.QRCodeオブジェクトを作成し、各種パラメータを設定します。qr.add_data(data)でデータをQRコードに追加し、qr.make(fit=True)でQRコードを生成します。 qr.make_image()を使用して画像を作成し、save()メソッドでファイルに保存します。

上記の例では、dataに"Hello, QR Code!"を指定し、生成されたQRコード画像を"qrcode.png"というファイル名で保存しています。必要に応じて、データとファイル名を適宜変更してください。

なお、このコードを実行するには、qrcodeライブラリをインストールする必要があります。pip install qrcodeを使用してインストールしてください。

結果:

下記のようにQRコードの画像が生成されて、別途スマホQRコードリーダーで読み取れました。文字列には「https://www.yahoo.co.jp/」を入れてます。

 

指示文2(プロンプト):

QRコードを一気に生成したいので、dataとfile_nameを記載したcsvファイルを読み込んで利用できるよう訂正してください。

 

回答:

指定されたCSVファイルを読み込んで、複数のQRコードを一気に生成するようにコードを修正します。以下に修正後のコードを示します。


import csv
import qrcode

def generate_qr_code(data, file_name):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4,
    )
    qr.add_data(data)
    qr.make(fit=True)
    
    img = qr.make_image(fill_color="black", back_color="white")
    img.save(file_name)

# CSVファイルからデータとファイル名を読み込んでQRコードを生成
with open('data.csv', newline='') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        data = row[0]
        file_name = row[1]
        generate_qr_code(data, file_name)

    

上記の修正後のコードでは、data.csvというファイル名を持つCSVファイルを読み込みます。CSVファイルの各行にはデータとファイル名が含まれており、それぞれをdataとfile_nameに割り当てています。 csv.readerを使用してCSVファイルを読み込み、各行に対してループを実行します。ループ内でgenerate_qr_code関数を呼び出し、データとファイル名を引数として渡します。 CSVファイルの形式は次のようになることを想定しています。


Hello, QR Code 1,qrcode1.png
Hello, QR Code 2,qrcode2.png
Hello, QR Code 3,qrcode3.png
...
    
結果:

以下のようにcsvファイルから複数のQRコードが一度に生成できました。