class ImageCollage::CollageGenerator

Public Class Methods

new(image_urls) click to toggle source
# File lib/imagecollage/collage_generator.rb, line 8
def initialize(image_urls)
  @image_urls = image_urls
end

Public Instance Methods

generate_image_collage(path) click to toggle source
# File lib/imagecollage/collage_generator.rb, line 12
def generate_image_collage(path)
  tmp_files = []
  @image_urls.each do |image_url|
    tmp_file = Tempfile.new(['image_collage', '.jpg'])

    open(image_url) do |image_file|
      tmp_file.write(image_file.read)
    end

    tmp_file.rewind
    tmp_files << tmp_file
  end

  image_list = ImageList.new(*tmp_files.map(&:path))

  resize!(image_list)
  image_list = montage(image_list)

  image_list.write(path)
ensure
  tmp_files.each do |tmp_file|
    tmp_file.close
    tmp_file.unlink
  end
end

Private Instance Methods

montage(image_list) click to toggle source
# File lib/imagecollage/collage_generator.rb, line 46
def montage(image_list)
  image_list.montage do
    self.geometry = '320x240+0+0>'
    rows = (image_list.size + 4) / 5
    self.tile = Geometry.new(5,rows)
  end
end
resize!(image_list) click to toggle source
# File lib/imagecollage/collage_generator.rb, line 40
def resize!(image_list)
  image_list.each do |image|
    image.resize_to_fill!(320, 240)
  end
end