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.



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

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

Instance Attribute Details

#gridObject (readonly)

Returns the value of attribute grid.



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

def grid
  @grid
end

Instance Method Details

#call(image_urls) ⇒ Object



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

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

  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