class ImageMosaic::Image::Parent

Takes an array of images and metrics and then returns a single image of composited images.

Public Class Methods

new(items, colour:, width:) click to toggle source
# File lib/image_mosaic/image/parent.rb, line 5
def initialize(items, colour:, width:)
  @items = items
  @colour = colour
  @width = width
end

Public Instance Methods

create() click to toggle source
# File lib/image_mosaic/image/parent.rb, line 11
def create
  image.run_command(:convert, '-size', dimensions, "xc:#{@colour}", image.path)
  @items.each { |item| @image = add_image(item) }
  Mosaic.new(image)
end

Private Instance Methods

add_image(image) click to toggle source
# File lib/image_mosaic/image/parent.rb, line 24
def add_image(image)
  Operations::Compositor.new(@image, image).save
end
dimensions() click to toggle source
# File lib/image_mosaic/image/parent.rb, line 19
def dimensions
  # Parent image is always square for time being.
  "#{@width}x#{@width}"
end
image() click to toggle source
# File lib/image_mosaic/image/parent.rb, line 32
def image
  @image ||= MiniMagick::Image.new(temp_file.path)
end
temp_file() click to toggle source
# File lib/image_mosaic/image/parent.rb, line 28
def temp_file
  @temp_file ||= Tempfile.new(['image_mosaic', '.png'])
end