2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

文字を画像化してslackに投稿 (python slackbot)

Last updated at Posted at 2020-01-21

前回(かなり前ですが)に書いた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 に表示されるときに同じ大きさにされてしまうので、今回は省きました
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?