📄
【Python】パワポのオートシェイプでQRコードを作るスクリプト
たぶん自分以外誰も使わないスクリプト👀
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