Rapidinha: juntando várias imagens em uma
Posted: setembro 20th, 2009 | Author: Carlan Calazans | 2 Comments »Uns dias atrás precisei juntar várias imagens separadas em único arquivo para descobrir o que estava causando um espaçamento em um arquivo de saída postscript gerado através de uma aplicação que desenvolvemos na empresa em que trabalho. As imagens em questão compõem uma track (área gráfica) em um software de acompanhamento geológico desenvolvido para a Petrobrás, muito parecido com isto por sinal. Enfim, não necessariamente as imagens precisam fazer parte de um gráfico. No meu caso, como eu precisava de uma imagem orientada na vertical, as imagens deveriam ter as mesmas dimensões, seguir uma nomenclatura que eu pudesse trabalhar facilmemente e só
Como fazer coisas repetitivas semprem dão sono, na maioria das pessoas, resolvi criar uma pequenina classe em Ruby baseado no que eu escrevi aqui. Segue a classe em questão.
require 'RMagick'
include Magick
class JoinImages
attr_accessor :source
def save(file)
@images = load_files
@images.write(file)
end
private
def load_files
@list = ImageList.new
Dir.entries(source).reject{|f| f =~ /^\./}.sort{|a,b| a.to_i<=>b.to_i}.each do |f|
@list.read "#{source}/#{f}"
end
@list.append(true)
end
end
#Usage:
#gif = JoinImages.new
#gif.source = 'img'
#gif.save 'track1.gif'
As minhas imagens foram salvas no formato “001.png”, “021.png”, “250.png” e assim por diante, ou seja, traduzindo temos “0″ como a track 1 (área gráfica 1) e “2″ como a track 3 (área gráfica 3), o resto é relativo a um contador.
Para montar a imagens final corretamente, existe uma ordenação no código, estou ordenando as imagem usando a parte numérica do nome do arquivo, como mencionado acima. É possível usar uma expressão regular para pegar somente as imagens que desejamos no bloco “reject” também.
Espero que seja útil pra alguém.
quero unir 2 fotos
Se você colocar somente duas imagens no diretório do script acima você provavelmente conseguirá o resultado que deseja. De qualquer forma veja a api, é bem fácil