LoginSignup
8
5

More than 5 years have passed since last update.

文字を画像化してslackに投稿

Last updated at Posted at 2017-11-22

slackを使っていると、文字を強調したくなることがあります。
絵文字や画像を使ったりしますが
もっとインパクトをもたせたい、チャンネルを開いた瞬間に目に入るようにしたいと思ったので
文字列を画像化するhubotスクリプト作成してみました。

ImageMagicとfontのインストール

  • まずはImageMagicとfontのインストール (CentOS/AmazonLinuxの場合です、他は適度に設定ファイルの場所を読みかえてください)
# yum install ImageMagick ipa-gothic-fonts
  • ImageMagicのLABEL読み取りを許可
    • /etc/ImageMagick/policy.xml の LABELの権限をreadに変更
  <policy domain="coder" rights="read" pattern="LABEL" />

サイズとフォントを指定して画像生成

# convert -pointsize $SIZE -font /usr/share/fonts/ipa-gothic/ipag.ttf "ここに画像化したい文字" /tmp/str_img.png

hubot スクリプト化

  • 最初は黒だけだったけど、色をランダムで変えた方が楽しいので適当にランダムで色変更と文字サイズを1-5くらい追加してhubot化
# Description:
#   str_img
#   hubot str_img string [size 1-5]
#

spcolor = [
  'magenta',
  'orange',
  'LimeGreen',
  'blue',
  'purple',
  'OrangeRed',
  'SkyBlue',
  'LightBlue',
  'Turquoise',
  'gold'
]


exec = require('child_process').exec
fs = require('fs')  

module.exports = (robot) ->

  robot.respond /str_img (.*)/i, (msg) ->
    sizeMatch = msg.match[1].match /\s([1-5])$/
    color = spcolor[Math.floor(Math.random() * spcolor.length)]

    if sizeMatch?
      str = msg.match[1].slice(0, -2)
      size = sizeMatch[1] * 50
    else
      str = msg.match[1]
      size = 50

    exec "convert -pointsize #{size} -font /usr/share/fonts/ipa-gothic/ipag.ttf label:#{str} /tmp/str_img.png"
    filename = '/tmp/str_img.png'
    channel = msg.message.room
    stats = fs.statSync(filename)

    if stats.size <= 100000
      exec "curl -F file=@#{filename} -F channels=#{channel} -F token=#{process.env.HUBOT_SLACK_TOKEN} https://slack.com/api/files.upload", (err, stdout, stderr) ->
        console.log(stdout)
        console.log(stderr)
    else
      msg.send "画像サイズが100Kbyteを超過してます、文字数を少なくするかサイズ指定を下げてください"

使い方

  • slack上で hubot str_img テスト
    • 文字を大きくする場合は hubot str_img テスト 2
    • 画像サイズは1から5の間で指定、画像が大きすぎるとslackに投稿失敗します
    • 画像uploadの制限が1Mybteかと思ったら100Kbyteだった、上げることができるかもしれないけど100Kbyteで十分かなとも思う

こんなかんじ

  • やっぱりフォントをゴニョゴニョフォントの出し分けもして、結果完成!(フォントゴニョゴニョは割愛)

qiita_str_img.PNG

8
5
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
8
5