ぺんぎんさんのおうち

日記です。たまに日記じゃないこともあります。

Slack用にemojiを回転させたい

おさかな・‪‪とり組のゆうけむです.

 

いきなりですがemojiを回転させてSlackで使いたいじゃないですか.

これを 

f:id:ushiromiya3:20180830195337p:plain

 こう

f:id:ushiromiya3:20180830195400g:plain

 

寿司を

f:id:ushiromiya3:20180830210500p:plain

こう(元画像大きくて笑う)

f:id:ushiromiya3:20180830210534g:plain

f:id:ushiromiya3:20180830210738g:plain

 

 

bashコマンドを駆使して回転画像(gif)を作成するエントリもありましたが, 以前試してもうまく動いてくれなかったので自分でスクリプトを書きました.

 

処理の流れとしては

 

1. 入力画像をcv2で読み込んで 128 * 128 にリサイズ (Salckのemojiサイズ規定)

2. ある角度(angle * i; i = {0, 1, 2, ...})回転させた画像を配列imagesに格納

2.1 OpencvはBGR, PILはRGB形式で画像を表現するので変換しておく

2.2 透過画像だと透過部分が[0, 0, 0]で表示するときに真っ黒になるので[255, 255, 255]に変換

2.3 cv2で読み込んだ画像(配列)をPILオブジェクトとして再読み込み

3. 一定の角度回転された複数の画像がimagesに入っているのでそれらをGIFとして保存

 

# パラメータ

- img_file : 入力画像

- angle : 回転角度. 正数だと反時計, 負数だと時計周りに回転

- duration : 1周するまでの時間. 単位は [ms] なのでここを小さくするとより早く回転する.

 

for slack emoji

入力画像のサイズが(n, n)じゃないと見切れる部分が黒くなるのを確認しています.

いい感じに直してみてください.