退屈なことはPythonにやらせよう
楽天ブックス Yahoo!
原著:Automate the Boring Stuff with Python:
Practical Programming for Total Beginners
開発環境
- macOS Catalina - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.8 (プログラミング言語)
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング (Al Sweigart(著)、相川 愛三(翻訳)、オライリージャパン)の第Ⅱ部(処理の自動化)、17章(画像の操作)、17.7(演習プロジェクト)、17.7.3(カスタム座席カード)の解答を求めてみる。
コード
#!/usr/bin/env python3
import os
import re
from PIL import Image, ImageDraw, ImageFont
WIDTH, HEIGHT = 360, 288
SIZE = (WIDTH, HEIGHT)
FONT = ImageFont.truetype('/System/Library/Fonts/ヒラギノ明朝 ProN.ttc',
size=50,
index=0)
dir_name = 'cards'
os.makedirs(dir_name, exist_ok=True)
flower_im = Image.open('flower.png')
reg = re.compile(r'\W')
with open('guests.txt') as f:
for name in f:
name = name.strip()
im = Image.new('RGBA', SIZE, 'white')
im.paste(flower_im, (0, 0))
draw = ImageDraw.Draw(im)
draw.line([(0, 0),
(WIDTH - 1, 0),
(WIDTH - 1, HEIGHT - 1),
(0, HEIGHT - 1),
(0, 0)],
fill='black')
text_width, text_height = FONT.getsize(name)
draw.text(((WIDTH - text_width) / 2, (HEIGHT - text_height) / 2),
text=name, font=FONT, fill='black')
im.save(os.path.join(dir_name, f'{reg.sub("", name)}.png'))
入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))
% cat guests.txt
Prof. Plum
Miss Scarlet
Col. Mustard
Al Sweigart
Robocop
福沢諭吉
樋口一葉
野口英世
% ./cards.py
% ls cards
./ MissScarlet.png 福沢諭吉.png
../ ProfPlum.png 野口英世.png
AlSweigart.png Robocop.png
ColMustard.png 樋口一葉.png
% open cards/*
%
0 コメント:
コメントを投稿