前回(かなり前ですが)に書いたhubotの文字を画像化して投稿するスクリプトですが、
最近は、Pythonをさわる機会が多いのと、
python slackbot が使いやすいと思うので、pythonで書き直してみました
pythonだと、ImageMagicを入れなくていい代わりに、pip で Pillow を入れる必要があります
Pythonは3以降を使用しています、
環境によっては下記コマンドはpipではなく、pip3だったりします
Pillowをインストール
pip install Pillow
文字を画像化してslackに投稿するスクリプト
# -*- coding: utf-8 -*
from slackbot.bot import respond_to
from slackbot.bot import listen_to
from slackbot.bot import default_reply
from PIL import Image, ImageDraw, ImageFont
import random
@respond_to('str_img\s+(.*)')
def mention_func1(message, arg1):
spcolor = [
'magenta',
'orange',
'LimeGreen',
'blue',
'purple',
'OrangeRed',
'SkyBlue',
'LightBlue',
'Turquoise',
'gold'
]
im = Image.new("RGB",(50,50),"white")
fnt = ImageFont.truetype('/slackbot/plugins/cp_font.ttf', 50)
draw = ImageDraw.Draw(im)
text_size = draw.textsize(arg1, fnt)
im = im.resize(text_size)
draw = ImageDraw.Draw(im)
draw.text((0,0), arg1, fill=random.choice(spcolor), font=fnt)
im.save("/tmp/str_img.png")
message.channel.upload_file(fname="/tmp/str_img.png", fpath="/tmp/str_img.png")
よくわかってないところ
- 文字を追加して、文字幅分のイメージを作成するために、ImageDraw.Draw を二回してます
- python(とくに画像関連)に詳しいわけじゃないので、他にいい書き方があれば修正します
その他
- 画像サイズを変えるオプションを前回はつけていましたが、
slack に表示されるときに同じ大きさにされてしまうので、今回は省きました