class Flico::Collager

Attributes

grid[R]

Public Class Methods

new(grid=Grid.new) click to toggle source
# File lib/flico/collager.rb, line 9
        def initialize(grid=Grid.new)
        @grid = grid
end

Public Instance Methods

call(image_urls) click to toggle source
# 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

Private Instance Methods

print_to_canvas(image, rectangle, temp_file) click to toggle source