Noël Café : Blog
Noëlの公開備忘録とひとりごと。コメント・トラックバックご自由に

PythonでSVGのQRコードを作成

QRコード生成サービスって色々ありますが、
画像でなくベクトルデータで欲しいとなると限られます。
今回サービスの検索をしたところ、
Pythonで思ったより簡単にできそうだったのでやってみました!
備忘録程度のメモ書きです。

やりたいこと

  • 文字列 → QRコードのSVGデータを作成
  • 自分のPC内で作成

ネットでも同様のことができるサービスがいくつかあります。
プログラム(スクリプト)を書く必要もないので普通の人はそれで良いと思います。
(セキュリティーの問題はあります。)

前提

  • Python3が入ってること
  • ライブラリqrcodeが入っていること

この程度の説明でわかる方が対象です。
それ以上のことはフォローしません。(他のサイトさんに説明を任せます。)

今回トライした環境も一応書いておきます。

  • OS : macOS Version12.3.1 (Intel Mac)
  • Python 3.9.12
  • qrcode 7.3

Script

Script 1 PNGファイル書き出し

とりあえず、一番簡単と思われるPNGファイルを作成してみます。
pyファイルはなんと実質3行!

import qrcode

img = qrcode.make(‘Some data here’)
img.save(“some_file.png”)

実行するとカレントディレクトリにsome_file.pngが作成されます。

Script 2 SVGファイル書き出し

次にベクトルデータであるSVGファイルを作成してみます。

import qrcode
import qrcode.image.svg

img = qrcode.make(‘Some data here’, image_factory=qrcode.image.svg.SvgPathImage)
img.save(“some_file.svg”)

実行すると今度はsome_file.svgが生成されます。
中身もちゃんとsvgファイルです。

import qrcode.image.svgとimage_factoryの指定がポイントですね。
SvgPathImageを使うのが良さそうです(拡大時に余白が入らない)。

あと、pillow必要と書いてあったりしますが、私はなくても動かせました。

Script 3 QRコード作成時のオプション追加

次にQRコード作成時のオプションをつけます。

import qrcode
import qrcode.image.svg

qr = qrcode.QRCode(
    version=6,
    error_correction=qrcode.ERROR_CORRECT_Q,
    box_size=10,
    border=4,
    image_factory=qrcode.image.svg.SvgPathImage,
)
qr.add_data(‘Some data’)
img = qrcode.make()
img.save(“some_file.svg”)

5行目のオプションですが、QRコードの仕様のところは
QRコードのオフィシャルサイトにわかりやすく詳細があります。
QRコードドットコム

  • error_correction : 誤り訂正能力
    デフォルトはQ(15%), アイコンを入れる場合はH(30%)に。
    • ERROR_CORRECT_L (7%)
    • ERROR_CORRECT_M (デフォルト, 15%)
    • ERROR_CORRECT_Q (25%)
    • ERROR_CORRECT_H (30%)
  • box_size : セル数(バージョン)
    小さい数字を入れても情報量が足りない場合は勝手に大きくなります。
  • border :
    QRコードの仕様は4離す必要あり(背景白抜きも)。

あとは自分が使いやすいように入出力まわりを手直しして完了です。

創作結果

川根のCafe ひぐらしさんとcafe TRUNKさんの支払い用QRコード作成しました♪
Instagramに投稿した写真ですが参考にどうぞー♪

Reference

余談

余談 1 このスクリプトのこと

今支払いでは欠かせないQRコード決済。
とにかく嫌なのが、全部のサービス、見た目がしつこい(爆)!
これは、自分で見た目を許せるように作ってあげよう♪ということになり
イラレで作成するからベクトルデータが欲しい
→ QRコード生成サービス使うのも良いけどPythonで案外簡単?!
ということにGoogle検索結果より気付き早速Try。
svgにするのに実は少し手こずりましたけど、
本当に簡単でびっくりしました。

余談 2 Pythonのこと

実はPythonはじめてだったんです(笑)。
はじめてがQRコード作成って。
超基礎が書いてあるサイトを2ヶ所くらい流し読みしてから取り掛かりました。
if分の終了カッコや文句がないとかちょっと気持ち悪いけど
検索しながらやりたいことはできそうな感触でした。

またそのうち、必要があれば何か書こうと思います。

余談 3 QRコード決済のこと

上にも書きましたがQRコード決済の見た目がしつこいのが嫌で
今回の対応をしました。

QRコード決済のお店のQRコードの内容自体は
ネットに流れたところで
「いつでもどこでも寄付どうぞ」になるだけなので問題ないのよね。
(あまりに大きい金額だと困るだろうけど。)
だから当初はネット上のサービスを使う予定でした。

それと今回わかったのが、QR決済のロゴってあんまり配布されてませんね。
PayPayはロゴマーク部分だけ、フォント部分だけ使えないみたいだし。
ロゴとかって気難しい(けどデザインするには取り扱い重要)。

余談 4 QRコードのこと

QRコードについても、サイズのこと、レイアウトのこと勉強になりました。
4コマ分は余白が必要なこと、
並べる時はバーコードのサイズと同じサイズ離す必要ありとか。
実際に、3個並べて印刷したものを読み取ってもらったときに
「ちゃんと読み取れるー」ってびっくりしてくださって嬉しかったです。

余談 5 創作結果

最後に、最終的に作成したものです。
参考にどうぞー。
川根のCafe ひぐらしさんとcafe TRUNKさんの支払い用QRコード作成しました♪
Instagramに投稿した写真ですが参考にどうぞー♪

この投稿をInstagramで見る

Noël(@noelcafecom)がシェアした投稿

この投稿をInstagramで見る

Noël(@noelcafecom)がシェアした投稿

Leave a Reply

*


CAPTCHA



Trackback URL