class Services::ImagePreparator

Constants

Public Class Methods

new(image_path, face_detection, safe_search) click to toggle source
# File lib/services/image_preparator.rb, line 5
def initialize(image_path, face_detection, safe_search)
  @image_path = image_path
  @face_detection = face_detection
  @safe_search = safe_search
end

Public Instance Methods

call() click to toggle source
# File lib/services/image_preparator.rb, line 18
def call
  image = MiniMagick::Image.open(@image_path)
  return @image_path unless oversized?(image)
  resize_image(image)
end

Private Instance Methods

oversized?(image) click to toggle source
# File lib/services/image_preparator.rb, line 26
def oversized?(image)
  dimensions = image.dimensions
  dimensions.any? { |dimension| dimension > 1600 }
end
resize_dimensions(image) click to toggle source
# File lib/services/image_preparator.rb, line 39
def resize_dimensions(image)
  width, height = image.dimensions
  resize_to = @face_detection ? "face_detection" : "safe_search"
  order = width > height ? 0 : 1
  resize_resolution(resize_to, order)
end
resize_image(image) click to toggle source
# File lib/services/image_preparator.rb, line 31
def resize_image(image)
  image.resize(resize_dimensions(image)).path
end
resize_resolution(filter, order) click to toggle source
# File lib/services/image_preparator.rb, line 35
def resize_resolution(filter, order)
  RECOMMENDED_SIZES.fetch(filter.to_sym)[order]
end