Rapidinha: GIF animado com Ruby
Posted: abril 1st, 2009 | Author: Carlan Calazans | Tags: aprendizado, dev, dica, rapidinha, ruby | No Comments »A algumas horas atrás estava tentando criar um gif animado para o twitter. Esbarrei com uma solução usando Gimp, sugestão do oráculo. Fiz o gif animado. Alguns minutos depois, o lembrei de uma gem para Ruby chamada RMagick para processamento de imagens. Como nunca a tinha experimentado eis que veio a idéia de escrever uma classe para criar um gif animado.
A gem RMagick é baseada na biblioteca de imagens Image Magick comumente conhecida no mundo Linux pelo poder de seus utilitários em linha de comando. É, linha de comando, sem a necessidade de Gimp, FW, PS e similares. Quem nunca ouviu falar de import ou convert?
A classe em questão é a:
require 'RMagick'
include Magick
class AnimatedGif
DELAY = 100
LOOP = 0
attr_accessor :source
def save(file)
load_files
@list.delay = DELAY
@list.iterations = LOOP
@list.write(file)
end
private
def load_files
@list = ImageList.new
Dir.new(source).entries.reject{|f| f =~ /^\./}.each do |f|
@list.read "#{source}/#{f}"
end
end
end
#Usage:
gif = AnimatedGif.new
gif.source = 'img_src'
gif.save '/tmp/animated.gif'
O delay entre as imagens está fixo no código. O loop é infinito, ou seja, seu gif ficará se repetindo a vida toda. Após criar um objeto da classe AnimatedGif é necessário informar um diretório com imagens estáticas para gerar o gif animado. E por último, é só chamar o método save passando o caminho do arquivo gif final.
Demorou uns dois minutos a mais depois do entendimento da solução em Gimp para gerar esta classe em Ruby. Foram uns 3 minutos para entender a técnica do Gimp e 5 minutos para criar a classe em Ruby. A linguagem não morde!
Leave a Reply