Class: ImageSqueeze
- Inherits:
-
Object
show all
- Defined in:
- lib/image_squeeze.rb,
lib/image_squeeze/utils.rb,
lib/image_squeeze/result.rb,
lib/image_squeeze/log_factory.rb,
lib/image_squeeze/image_identifier.rb,
lib/image_squeeze/processors/processor.rb,
lib/image_squeeze/processors/optipng_processor.rb,
lib/image_squeeze/processors/gifsicle_processor.rb,
lib/image_squeeze/processors/png_crush_processor.rb,
lib/image_squeeze/processors/gif_to_png_processor.rb,
lib/image_squeeze/processors/jpeg_tran_progressive_processor.rb,
lib/image_squeeze/processors/jpeg_tran_non_progressive_processor.rb
Defined Under Namespace
Modules: Utils
Classes: GIFToPNGProcessor, GifsicleProcessor, JPEGTranNonProgressiveProcessor, JPEGTranProgressiveProcessor, LogFactory, OptiPNGProcessor, PNGCrushProcessor, Processor, Result
Constant Summary
collapse
- VERSION =
'0.1.3'
- GIF =
'gif'
- ANIMATED_GIF =
'animated gif'
- JPEG =
'jpeg'
- PNG =
'png'
- UNKNOWN =
'unknown'
- NOT_FOUND =
'not_found'
- IMAGE_TYPE_TO_EXTENSION =
{
GIF => '.gif',
ANIMATED_GIF => '.gif',
JPEG => '.jpg',
PNG => '.png'
}
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(options = {}) ⇒ ImageSqueeze
Returns a new instance of ImageSqueeze.
41
42
43
44
45
46
47
48
49
|
# File 'lib/image_squeeze.rb', line 41
def initialize(options = {})
ImageSqueeze::Utils.image_utility_available?('identify', 'all image', Logger::ERROR)
@processors = options[:processors] || []
@processors += self.class.default_processors if options[:default_processors]
@tmpdir = options[:tmpdir] || Dir::tmpdir
end
|
Instance Attribute Details
#processors ⇒ Object
Returns the value of attribute processors.
21
22
23
|
# File 'lib/image_squeeze.rb', line 21
def processors
@processors
end
|
#tmpdir ⇒ Object
Returns the value of attribute tmpdir.
22
23
24
|
# File 'lib/image_squeeze.rb', line 22
def tmpdir
@tmpdir
end
|
Class Method Details
.default ⇒ Object
51
52
53
|
# File 'lib/image_squeeze.rb', line 51
def self.default
@processors = self.class.default_processors
end
|
.default_processors ⇒ Object
.image_type(filename) ⇒ Object
.logger ⇒ Object
97
98
99
|
# File 'lib/image_squeeze.rb', line 97
def self.logger
LogFactory.logger
end
|
Instance Method Details
#finalize_result(result) ⇒ Object
85
86
87
88
89
90
91
92
93
94
95
|
# File 'lib/image_squeeze.rb', line 85
def finalize_result(result)
filename = output_filename = result.filename
if File.extname(result.filename) != result.output_extension
output_filename = filename.sub(Regexp.new(Regexp.escape(File.extname(result.filename)) + '$'), result.output_extension)
FileUtils.mv(result.output_filename, output_filename)
FileUtils.rm(result.filename)
else
FileUtils.mv(result.output_filename, result.filename)
end
output_filename
end
|
#logger ⇒ Object
101
102
103
|
# File 'lib/image_squeeze.rb', line 101
def logger
self.class.logger
end
|
#squeeze(filename) ⇒ Object
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/image_squeeze.rb', line 55
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
|
#squeeze!(filename) ⇒ Object
78
79
80
81
82
83
|
# File 'lib/image_squeeze.rb', line 78
def squeeze!(filename)
result = squeeze(filename)
output_filename = filename
output_filename = finalize_result(result) if result
end
|