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
|