Method: ImageSqueeze#squeeze

Defined in:
lib/image_squeeze.rb

#squeeze(filename) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/image_squeeze.rb', line 57

def squeeze(filename)
  image_type = self.class.image_type(filename)
  return if [UNKNOWN, NOT_FOUND].include?(image_type)

  processors = @processors.select{ |processor| processor.handles?(image_type) }
  return if processors.empty?
  
  original_file_size = File.size(filename)
  sorted_results = processors.map do |processor_class|
    output_filename = tmp_filename(filename)
    processor_class.squeeze(filename, output_filename)
    output_file_size = File.size(output_filename)
    result_options = { :filename => filename, :output_filename => output_filename, :bytes_saved => original_file_size - output_file_size, :output_extension => processor_class.output_extension }
    Result.new(result_options)
  end.sort
  
  most_optimized = sorted_results.pop if sorted_results[-1].optimized?
  sorted_results.each do |result|
    FileUtils.rm(result.output_filename)
  end
  most_optimized
end