Python-Fu Gif自動化スクリプト 第1弾

 Python-Fuで回転するGif画像を自動で生成するプログラムをつくってみた


 gifは動く画像として様々なところに使用されています。今回は下の歯車画像のようにGIMPを使用して回転するGif画像を生成するスクリプトをPyhonで作りました。

このスクリプトはここからダウンロードできます 



1. GIMP で gif 画像を作る方法

GIMPからgif画像を作成する方法を先ほどの歯車画像を例に軽く説明します。

 

1. 画像を用意する(今回は歯車)

2. 画像をコピー (レイヤーを追加)

3. GIMPの回転機能を使い画像を回転する 

移行2~3を繰り返す


 

GIMPではレイヤーをパラパラ漫画の紙に見立ててgif画像を出力します。今回は回転させるだけなのでレイヤー1枚ごとに角度の変化をつけることで回転している歯車の画像をつくることができます。 (1枚目は0°、2枚目は5°、3枚目は10°、4枚目は...)


2. 単純操作の自動化


 今回は画像を 複製→回転... の手順を必要なだけ繰り返す必要があります。この手順が少なければ問題ありませんが、これが50回、100回などの回数になると手動ではかなり面倒になります。

  そこで今回は "Python-Fu" を用いてこの作業を自動化させます。 「複製→回転」 の単純動作をプログラムで自動化させればよさそうです

(Python-Fu とは Python言語でGIMPの作業を自動化させたり機能を追加したりできる機能らしいです。)

 

Python-Fuの自動化プログラムは以下のようになります。

 

import math

from gimpfu import *

def plugin_main(image, layer, NoL,name,deg):

    x=(image.width+1)/2
    y=(image.height+1)/2

    rep = "(replace)"
    ms = 100

    new_layer = [0] * NoL
    
    gimp.message("Start" )
    gimp.message(str(NoL))
    layer = image.active_layer
    pdb.gimp_layer_set_name(layer,name + "-" + "0")

    for i in range(0,NoL):
        
        new_layer[i] = pdb.gimp_layer_copy(layer, 1)
        image.add_layer(new_layer[i], 0)
        pdb.gimp_item_transform_rotate(new_layer[i],((i+1)*deg*math.pi)/180,TRUE,0,0)
        pdb.gimp_layer_resize_to_image_size(new_layer[i])#追加
        pdb.gimp_layer_set_name(new_layer[i],name + "-" + str(i+1))
        
    gimp.message("finish" )
    

register(
    "rotate_gif2",#コマンドラインまたはスクリプトから呼び出す場合のコマンドの名前
    "rotate images",#プラグインの説明
    "this plugin automatically add rotated images. It should be used to create a gif.",#プラグインの詳細な説明
    "Sieggang works",#プラグインの作成者
    "am(copyright)",#プラグインの著作権保有者 (通常は author と同じ)
    "2022/02/01",#著作権の日付
    "/Plug Ins/for gif/roteto2", #メニューの中でプラグインに使用されるラベル
    "RGB*, GRAY*", #プラグインで処理する対象となる画像のタイプex. RGB*, GRAY* など
    [
        (PF_INT,"NoL","レイヤー数",0),#NoL number of layer
        (PF_STRING,"name","レイヤー名","0"), #レイヤー名        
        (PF_FLOAT,"deg","回転角度[°]",0)
    ],#引数(型, 名前(プロシージャブラウザに表示される),説明, 初期値)
    [], # 戻り値
    plugin_main) # メソッド名

main()

 

このプログラムを使用すると動画のようになります。

 


Python-Fuで回転するGif画像を自動で生成することができました。


3. 使い方


ここからは使い方を解説していきます。
※GIMP を使用するのであらかじめダウンロードしておいてください


1.スクリプトを GitHub に公開していますのでこちらからダウンロードしてください。

2. gif_rotation.py をダウンロードしたら plug-ins にスクリプトを入れます。 

※フォルダ場所 (デフォルト)   ユーザ > ユーザ名 > AppData > Roming > GIMP > 2.10 > plug-ins

3. メニューバーに以下のようなものが追加されます。


 4. gif にしたい画像をGIMPにインポートしプラグインを起動します。


 5. プラグインを起動するとウィンドウが出てきます。それぞれの値を設定し "OK" をクリックします

 


 ① 追加するレイヤー数 (例では 「転させる画像+3 の合計 4レイヤーが作成されます)

 ② 追加するレイヤーの名前

 ③ 1 レイヤー ごとに回転させる角度 (例では 0 、 12 、 24 、 36° になります)

 ④ レイヤー1枚ごとの表示時間 ミリ秒[ms] (1000 ms で 1秒)


6. 出力結果は以下のようになります。gifとして出力すれば完成です。

 


 できた gif画像は以下のようになります。



補足. 画像サイズ、追加するレイヤー数によっては出力に時間がかかる場合があります。また完成したらメニューバー "フィルター > アニメーション > GIF用最適化" することで文字通り最適化してくれるので活用してもよいかもしれません。


4. 活用方法


 このスクリプトを応用することで以下のような画像もつくることができます。完成した Gif画像は SNS のプロフィール画像にしてみるのもよいかもしれません。 
ぜひこのスクリプトを活用してみてください。

 



 

 

 

コメント