Class: Flico::Collager

Inherits:
Object
  • Object
show all
Defined in:
lib/flico/collager.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(grid = Grid.new) ⇒ Collager

Returns a new instance of Collager.



9
10
11
# File 'lib/flico/collager.rb', line 9

def initialize(grid=Grid.new)
    @grid = grid
end

Instance Attribute Details

#gridObject (readonly)

Returns the value of attribute grid.



7
8
9
# File 'lib/flico/collager.rb', line 7

def grid
  @grid
end

Instance Method Details

#call(image_urls) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/flico/collager.rb', line 13

def call(image_urls)
    images = image_urls.map { |p| MiniMagick::Image.open p.path }
    temp_file = Tempfile.new ['collage_maker', '.png']
    canvas = MiniMagick::Tool::Convert.new do |i|
      i.size "#{grid.canv_width}x#{grid.canv_height}"
      i.xc "white"
      i << temp_file.path
    end

    resized_images = image_urls.map.with_index do |path, idx|
     image = MiniMagick::Image.open path.path
     image.crop(grid.crop_rectangle(idx, image.width, image.height).to_mm)
     image.resize(grid.resize_rectangle(idx, image.width, image.height).to_mm)
      print_to_canvas(image, grid.cell_rectangle(idx), temp_file)
    end
    temp_file
end