gtk2,gtk3 で 画像(Gtk::Image,Gdk::Pixbuf)や周期的呼び出し(Gtk.timeout_add,GLib::Timeout)でアニメーションを表示します。
1.画像を作る(読み込む、セットする)
Gtk::Image#initialize(:stock => nil, :icon_name => nil, :icon_set => nil, :icon => nil, :file => nil, :pixbuf => nil, :animation => nil, :surface => nil, :size => nil)
( Gtk::Image.new(value = nil) ;gtk2 ではこれでも可)
 画像(Gtk::Image)を作ります
 ・nil;空の Gtk::Image を作ります
 ・:file;ファイル名で指定された画像を読み込み Gtk::Image を作ります
 ・:pixbuf;GdkPixbuf の画像から Gtk::Image を作ります
 ・:animation;Gdk::PixbufAnimationのアニメーションから Gtk::Image を作ります
 (valueの場合;:file,:pixbuf,:animation のどれかを指定する)

Gtk::Image#pixbuf=(pixbuf)
 Gtk::Image#set_pixbuf(pixbuf)
 GdkPixbuf の画像をセットします 

GdkPixbuf::Pixbuf.new(:file => path)
(Gdk::Pixbuf.new(filename, width = nil, height = nil) はdeprecated)
 :file;ファイル名で指定された画像を読み込み GdkPixbuf を作ります

画像をウィンドウに表示するには、Gtk::Image が必要です。
GdkPixbuf は画像ファイルを読み込んだり、加工したりするクラスです。この画像を Gtk::Image にセットします。(ただし、Gtk::Image.new(filename) でも画像ファイルを読み込むことができます。)
画像ファイルのフォーマットは、一般的な .jpg、.bmp、.png などに対応しています。

→・5分で学ぶGTK+ - myokoym - Rabbit Slide Show


(license; public domain)
・gtk_image_1.rb
require 'gtk3'
#require 'gtk2'              # gtk2ライブラリでも実行可能

window = Gtk::Window.new
window.set_size_request(400, 300)

image1 = Gtk::Image.new(:file => './images/face_1.png')
# image1 = Gtk::Image.new('./images/face_1.png')      # gtk2ではこれでも可

image2 = Gtk::Image.new
pixbuf_2 = GdkPixbuf::Pixbuf.new(:file => './images/face_2.png')
image2.pixbuf = pixbuf_2


fixed = Gtk::Fixed.new
fixed.put(image1,  10, 10)
fixed.put(image2, 180, 10)
window.add(fixed)

window.show_all
window.signal_connect("destroy") { Gtk.main_quit }
Gtk.main
・./images/face_1.png
face_1

・./images/face_2.png
face_2

・./images/face_3.png
face_3

・./images/face_4.png
face_4

・./images/face_5.png
face_5


(./images/以下に face_1.png 以下を置いた時の実行結果)
gtk_image_1



2.周期的呼び出しでアニメーションにする
画像を連続して表示してアニメーションにするには、周期的呼び出しを使います
(アニメーションファイル自体は Gdk::PixbufAnimation で対応しています)

○周期的呼び出し
GLib::Timeout.add(interval){ ... }
Gtk.timeout_add(interval){ ... } は、deprecated)
 interval;ミリ秒(1/1000秒)単位で指定
 { ... } ;ブロック(Proc など)を呼び出します(true を返すと繰り返します)

GLib::Timeout.add_seconds(interval){ ... }
 interval;秒(1秒)単位で指定
 { ... } ;ブロック(Proc など)を呼び出します(true を返すと繰り返します)
require 'gtk3'
#require 'gtk2'              # gtk2ライブラリでも実行可能

window = Gtk::Window.new
window.set_size_request(400, 300)



@image = Gtk::Image.new     # 空のGtk::Imageを作成

# imagesフォルダ内の画像ファイルを順次読み込んで、Pixbufを作成
# @image_arrayに配列として追加していく
@image_array = []
Dir.glob('images/*.png').sort.each do |filename|
  @image_array.push(GdkPixbuf::Pixbuf.new(:file => filename))
end

idx = 0
# 500ミリ秒ごとに周期的呼び出し
GLib::Timeout.add(500) do   # Gtk.timeout_addは、gtk3ではdeprecated
  @image.pixbuf = @image_array[idx]  # @imageに@image_arrayのPixbufの画像を設定

  if idx < @image_array.size - 1
    idx += 1       # @image_arrayの画像を順番に設定
  else
    idx = 0
  end
  true             # 返り値がtrueでないと1回で終了
end

fixed = Gtk::Fixed.new
fixed.put(@image,  10, 10)
window.add(fixed)

window.show_all
window.signal_connect("destroy") { Gtk.main_quit }
Gtk.main

(実行結果;0.5秒毎に画像が変わっていく)
gtk_image_2