おさかな・とり組のゆうけむです.
いきなりですがemojiを回転させてSlackで使いたいじゃないですか.
これを
こう
寿司を
こう(元画像大きくて笑う)
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] なのでここを小さくするとより早く回転する.
入力画像のサイズが(n, n)じゃないと見切れる部分が黒くなるのを確認しています.
いい感じに直してみてください.