Assuntos relacionados à programação, pedaços de códigos, pequenas dicas, pequenos tutoriais, alguns vídeos, algumas fotos e etc.

Rapidinha: juntando várias imagens em uma

Posted: setembro 20th, 2009 | Author: | 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 'rubygems'
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.


2 Comments on “Rapidinha: juntando várias imagens em uma”

  1. 1 laiane said at 2:25 pm on abril 28th, 2010:

    quero unir 2 fotos

  2. 2 Carlan Calazans said at 8:56 pm on abril 28th, 2010:

    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 ;)


Leave a Reply