📄

【Python】パワポのオートシェイプでQRコードを作るスクリプト

2024/04/06に公開

たぶん自分以外誰も使わないスクリプト👀
HDDのこやしになっていたものを供養。

以下みたいなスライドが作れます。
何の意味が?とツッコミはあると思いますが、、、
個別に色を変えたり?アニメーション付けたり?できる。。。?

依存パッケージ

依存パッケージは以下の3つです。

pip install tqdm opencv-python  python-pptx

スクリプト

スクリプト全文は以下です。

from tqdm import tqdm

import cv2
from pptx.util import Cm
from pptx import Presentation
from pptx.dml.color import RGBColor
from pptx.enum.shapes import MSO_SHAPE

# 保存するパワポの名前
ppt_name = 'test.pptx'
# QRコードに埋め込むテキスト
qrcode_text = 'https://twitter.com/KzhtTkhs'
# オートシェイプの設定
ppt_shape_type = MSO_SHAPE.RECTANGLE
ppt_shape_size_cm = 0.2

# QRコード エンコーダー設定
qr_params = cv2.QRCodeEncoder_Params()
qr_params.correction_level = cv2.QRCODE_ENCODER_CORRECT_LEVEL_H
qr_params.mode = cv2.QRCODE_ENCODER_MODE_AUTO
qr_params.structure_number = 1
# qr_params.version = 20  # 設定可能な値は1-40 必要に応じて設定
qr_encoder = cv2.QRCodeEncoder.create(qr_params)

# QRコードを作成
qrcode = qr_encoder.encode(qrcode_text)

# スライド作成
ppt = Presentation()
slide_layout_plain = 6  # 空白ページ
slide = ppt.slides.add_slide(ppt.slide_layouts[slide_layout_plain])

# オートシェイプでQRコードを描画
for y_index, qrcode_line in tqdm(enumerate(qrcode)):
    for x_index, value i

オートシェイプの形状を変えてみる

エラー訂正に頼ったデザインで、公式非推奨な書き方ですが、、、
結構読み取れます👀

# オートシェイプの設定
ppt_shape_type = MSO_SHAPE.RECTANGLE

六角形
# オートシェイプの設定
ppt_shape_type = MSO_SHAPE.HEXAGON

ハート
# オートシェイプの設定
ppt_shape_type = MSO_SHAPE.HEART

太陽
# オートシェイプの設定
ppt_shape_type = MSO_SHAPE.SUN

QRコード設定メモ

エラー訂正レベル
qr_params.correction_level = cv2.QRCODE_ENCODER_CORRECT_LEVEL_H
設定値 内容
cv2.QRCODE_ENCODER_CORRECT_LEVEL_L 約7%復元可能
cv2.QRCODE_ENCODER_CORRECT_LEVEL_M 約15%復元可能
cv2.QRCODE_ENCODER_CORRECT_LEVEL_Q 約25%復元可能
cv2.QRCODE_ENCODER_CORRECT_LEVEL_H 約30%復元可能
エンコーダーモード
qr_params.mode = cv2.QRCODE_ENCODER_MODE_AUTO
Head Head
cv2.QRCODE_ENCODER_MODE_AUTO 自動
cv2.QRCODE_ENCODER_MODE_NUMERIC 数字のみのデータ(0~9)
cv2.QRCODE_ENCODER_MODE_ALPHANUMERIC 数字、英字、記号のデータ
cv2.QRCODE_ENCODER_MODE_BYTE バイナリデータ
cv2.QRCODE_ENCODER_MODE_ECI 文字エンコーディングUTF-8
cv2.QRCODE_ENCODER_MODE_KANJI 漢字のみのデータ
バージョン(QRコードのサイズ)

指定しない場合はオート

# qr_params.version = 20  # 設定可能な値は1-40 必要に応じて設定

バージョンごとの最大データ量とQRコードのサイズは以下の参考資料を参照
参考資料:キーエンス QRコードの種類と大きさ、データ容量

Discussion