【Python】あみだくじ画像を自動生成する方法!候補者指定するだけ!

こんにちは、ヒガシです。

 

このページではPythonを使って以下の画像のようなあみだくじを一瞬で自動生成する方法をご紹介していきます。

あみだくじ画像を自動生成した例

あなたがやることは候補者のリストを作成するだけでOKです。

 

それではさっそくやっていきましょう!

 

スポンサーリンク

必要なライブラリ一覧

今回は以下のライブラリを使用します。

★Pillow(要インストール)

★numpy(要インストール)

 

まずはあなたの環境でインポート可能か確認してみましょう。

 

スポンサーリンク

あみだくじ自動作成プログラムの紹介

さっそくですが、冒頭に紹介したようなあみだくじを自動で生成できるプログラムをご紹介します。

#ライブラリインポート
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import numpy as np

#情報入力
list=['AA','BB','CC','DD','EE','FF','GG','HH']
bar_horizontal=30
#文字サイズ、色、画像サイズ等の指定
font_size=50
font_color=255
line_w=5
h=1200
w=1200
font_path="C:\Windows\Fonts\HGRPP1.TTC"
font = ImageFont.truetype(font_path, font_size) 
bar_vertical=len(list)
width_h=int((h-400)/bar_horizontal)
width_w=int(w/bar_vertical)

#ベース画像の作成
base_img=Image.new("L",(w+width_w,h+width_h))
#PillowからNumPyへの変換
base_img=np.array(base_img)

#あみだの線を描写する
for i in range(bar_vertical):
    base_img[width_h+100:-width_h-100,(i+1)*width_w-line_w:(i+1)*width_w+line_w]=200
for i in range(bar_horizontal):
    pos=np.random.randint(1,bar_vertical)
    base_img[width_h+200+int((i+1)*width_h-line_w):width_h+200+int((i+1)*width_h+line_w),pos*width_w:(pos+1)*width_w]=200

#NumPyからPillowへの変換
base_img=Image.fromarray(base_img)
#候補初リストを描写する
for i in range(bar_vertical):
    ImageDraw.Draw(base_img).text(((i+1)*width_w-12*len(list[i]), 50), list[i], font = font , fill = font_color)
election=np.random.randint(0,bar_vertical)
ImageDraw.Draw(base_img).text(((election+1)*width_w-25, h-100), '★', font = font , fill = font_color)

#画像の表示&保存
base_img.show()
base_img.save('amida3.jpg', quality=100)

 

基本的にあなたがやるべきことは、8行目の候補者のリストを作成するだけでOKです。

 

もし候補者が非常に多く、横棒がスカスカになった場合は9行目のbar_horizontalの数値を増加させましょう。ここで横棒の数を指定しています。

 

また、同じく候補者が多く、縦棒の間隔が狭くなりすぎた場合は15行目のwを増加させましょう。ここで生成画像の横幅を指定しています。

 

スポンサーリンク

サンプルコードの実行結果確認

それではさっそく実行してみましょう。

 

まずは先ほどのコードをそのまま実行してみます。サンプルコードの実行結果1

いい感じで作成できていますね。

 

同じプログラムをもう一度実行してみます。

サンプルコードの実行結果2

横線の位置、あたりを示す★マークの位置が変化していますね。

 

こんな感じで実行するごとにランダムに画像を生成します。

 

次は候補者のリストを変更してみましょう。

以下の設定にて実行してみます。

list=[‘AA’,’BB’,’CC’,’DD’,’EE’]
bar_horizontal=20

サンプルコードの実行結果3

こちらも問題なく対応できていますね。

 

スポンサーリンク

おわりに

というわけで今回はpythonを使って’あみだくじ’を自動生成するプログラムをご紹介しました。

 

職場の抽選会等にぜひご活用ください。

 

このように、私のブログでは様々なスキルを紹介しています。

過去記事一覧

 

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村 IT技術ブログへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました