読者です 読者をやめる 読者になる 読者になる

RMagick を使ってGIFアニメ(Ruby)

メソッド gifanme(delay, dir) です。dir は素材画像の入っているディレクトリ、delay は待ち時間(1/100秒単位)です。gifanime.gif という名前で出力されます。アニメーションされる順番はディレクトリ内のファイルのアルファベット辞書順になります。例えば img2.jpg よりも img11.jpg の方が先に来るので、注意して下さい。

Gem は RMagick の他、自家製の Utils(imgsuffix メソッド)を使っています。Linux での RMagick のインストールに関しては、こちらが参考になるかもしれません。
gifanime.rb

require 'bundler/setup'
require 'rmagick'
require 'utils'
include Magick

def gifanime(delay = 20, dir = "./")
  list = ImageList.new
  Dir.chdir(dir)
  Dir.glob("*").sort.each do |fn|
    list.concat(ImageList.new(fn)) unless fn.imgsuffix.empty?
  end
  list.delay = delay
  list.write("./gifanime.gif")
end

if __FILE__ == $0
  gifanime(ARGV[0], ARGV[1])
end

String#imgsuffix

class String 
  def imgsuffix
    [".jpg", ".gif", ".png", ".jpeg", ".bmp", ".JPG", ".GIF", ".PNG", ".JPEG", ".BMP"].each do |sf|
      return sf if include?(sf)
    end
    ""
  end
end


※参考
RMagick 1.15.0 User's Guide and Reference