image_optimizer_holder 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c6c82e55a4d3f823ec3b1379bfafdf9ec22e2523
4
+ data.tar.gz: 166f88acee174cc00b3f0f41916e99922cd2f349
5
+ SHA512:
6
+ metadata.gz: 1f13a07d23bd59254f102390a7cfd454182824b6d8b53a648aec0de69a69ff28315a89720b25b0b5a47b0ca291f96a02308dacb8155892f16ac1d1435bfbaeab
7
+ data.tar.gz: 47e6f4a24d6115cd52efc90593058541a40ac7ff6cc5face08fd2632c3d1ce201d2c1f955b32bdba799fd49c0a6b88a70b486fc251ba61088a2a88109bba52c3
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .idea/
@@ -0,0 +1,21 @@
1
+ language: ruby
2
+ rvm:
3
+ - jruby-18mode
4
+ - jruby-19mode
5
+ - jruby-head
6
+ - 1.8.7
7
+ - 1.9.2
8
+ - 1.9.3
9
+ - 2.0.0
10
+ - 2.1.0
11
+ - ruby-head
12
+ - rbx-2.1.0
13
+ - rbx-2.2.0
14
+ - ree
15
+ matrix:
16
+ allow_failures:
17
+ - rvm: jruby-18mode
18
+ - rvm: 1.8.7
19
+ - rvm: rbx-2.1.0
20
+ - rvm: rbx-2.2.0
21
+ - rvm: ree
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in image_optimizer.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Julian Tescher
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,94 @@
1
+ # ImageOptimizer
2
+
3
+ This gem allows you to simply optimize images via jpegoptim or OptiPNG.
4
+
5
+ Tested against ruby 1.8.7, 1.9.2, 1.9.3, 2.0.0, 2.1.0, ruby-head, jruby-18mode, jruby-19mode, jruby-head, rbx-2.1.0,
6
+ rbx-2.2.0, and ree
7
+
8
+ [![Build Status](https://secure.travis-ci.org/jtescher/image_optimizer.png)]
9
+ (http://travis-ci.org/jtescher/image_optimizer)
10
+ [![Dependency Status](https://gemnasium.com/jtescher/image_optimizer.png)]
11
+ (https://gemnasium.com/jtescher/image_optimizer)
12
+ [![Code Climate](https://codeclimate.com/github/jtescher/image_optimizer.png)]
13
+ (https://codeclimate.com/github/jtescher/image_optimizer)
14
+ [![Coverage Status](https://coveralls.io/repos/jtescher/image_optimizer/badge.png)]
15
+ (https://coveralls.io/r/jtescher/image_optimizer)
16
+ [![Gem Version](https://badge.fury.io/rb/image_optimizer.png)](http://badge.fury.io/rb/image_optimizer)
17
+
18
+ ## Installation
19
+
20
+ ##### This gem uses the following utilities for optimizing images:
21
+
22
+ 1. jpegoptim, which can be installed from [freecode.com](http://freecode.com/projects/jpegoptim)
23
+
24
+ 2. OptiPNG, which can be installed from [sourceforge.net](http://optipng.sourceforge.net/)
25
+
26
+ Or install the utilities via homebrew:
27
+
28
+ ```bash
29
+ $ brew install optipng jpegoptim
30
+ ```
31
+
32
+ Then add this line to your application's Gemfile:
33
+
34
+ gem 'image_optimizer'
35
+
36
+ And then execute:
37
+
38
+ ```bash
39
+ $ bundle
40
+ ```
41
+
42
+ Or install it yourself as:
43
+ ```bash
44
+ $ gem install image_optimizer
45
+ ```
46
+
47
+ ## Usage
48
+
49
+ #### Optimize PNG or GIF formats:
50
+
51
+ OptiPNG is a PNG optimizer that recompresses image files to a smaller size without losing any information and
52
+ performs PNG integrity checks and corrections.
53
+
54
+ ```ruby
55
+ ImageOptimizer.new('path/to/file.png').optimize
56
+ ```
57
+
58
+ #### Optimize JPEG formats:
59
+
60
+ jpegoptim provides lossless optimization for JPEG files based on optimizing the Huffman tables.
61
+ All jpegs will be progressively optimized for a better web experience
62
+
63
+ ```ruby
64
+ ImageOptimizer.new('path/to/file.jpg').optimize
65
+ ```
66
+
67
+ ## Optimization Options
68
+
69
+ ##### Quiet optimization
70
+
71
+ To have optimization performed in quiet mode without logging progress, an optional `quiet` parameter may be passed.
72
+ Default is false.
73
+
74
+ ```ruby
75
+ ImageOptimizer.new('path/to/file.jpg', quiet: true).optimize
76
+ ```
77
+
78
+ ##### Lossy JPEG optimization
79
+
80
+ Pass an optional `quality` parameter to target a specific lossy JPG quality level (0-100), default is lossless
81
+ optimization. PNGs will ignore the quality setting.
82
+
83
+ ```ruby
84
+ ImageOptimizer.new('path/to/file.jpg', quality: 80).optimize
85
+ ```
86
+
87
+
88
+ ## Contributing
89
+
90
+ 1. Fork it
91
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
92
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
93
+ 4. Push to the branch (`git push origin my-new-feature`)
94
+ 5. Create new Pull Request
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
Binary file
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'image_optimizer_holder/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "image_optimizer_holder"
8
+ gem.version = ImageOptimizerHolder::VERSION
9
+ gem.authors = ["Peter Arentsen"]
10
+ gem.email = ["peter.arentsen@holder.nl"]
11
+ gem.description = %q{A simple image optimizer}
12
+ gem.summary = %q{Simply optimize images via imagemagick or pngcrush fork from image_optimizer with carrierwave included}
13
+ gem.homepage = "https://github.com/nulian/image_optimizer"
14
+ gem.license = 'MIT'
15
+
16
+ gem.files = `git ls-files`.split($/)
17
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
+ gem.require_paths = ["lib"]
20
+
21
+ gem.add_dependency "carrierwave", ["~> 0.8"]
22
+
23
+ gem.add_development_dependency "rspec"
24
+ gem.add_development_dependency "rake"
25
+ gem.add_development_dependency "simplecov"
26
+ gem.add_development_dependency "coveralls"
27
+ gem.add_development_dependency "mime-types", "~> 1.25.1"
28
+ end
@@ -0,0 +1,7 @@
1
+ module CarrierWave
2
+ module ImageOptimizerHolder
3
+ def optimize(options = {})
4
+ ::ImageOptimizerHolder.new(current_path, options).optimize
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,20 @@
1
+ require 'image_optimizer_holder/version'
2
+ require 'image_optimizer_holder/jpeg_optimizer'
3
+ require 'image_optimizer_holder/png_optimizer'
4
+ require 'carrierwave_image_optimizer'
5
+
6
+ class ImageOptimizerHolder
7
+ attr_reader :path, :options
8
+
9
+ def initialize(path, options = {})
10
+ @path = path
11
+ @options = options
12
+ end
13
+
14
+ def optimize
15
+ JPEGOptimizer.new(path, options).optimize
16
+ PNGOptimizer.new(path, options).optimize
17
+ end
18
+ end
19
+
20
+
@@ -0,0 +1,26 @@
1
+ class ImageOptimizerHolder
2
+ GEM_ROOT = File.expand_path File.join(File.dirname(__FILE__), "../../")
3
+
4
+ class Base
5
+ def binary_path
6
+ @binary_path ||= begin
7
+ try_system_binary or try_vendored_binaries or ""
8
+ end
9
+ end
10
+
11
+ private
12
+
13
+ def try_system_binary
14
+ system_binary = `which #{@name}`.chomp
15
+ system_binary if system_binary.length > 0
16
+ end
17
+
18
+ def try_vendored_binaries
19
+ # use the first vendored binary that doesn't shit the bed when we ask for its version
20
+ vendored_binaries = Dir["#{GEM_ROOT}/bin/#{@name}.*"].sort
21
+ vendored_binaries.find do |path|
22
+ system("#{path} -version 2> /dev/null > /dev/null")
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,78 @@
1
+ require "image_optimizer_holder/base"
2
+
3
+ class ImageOptimizerHolder
4
+ class JPEGOptimizer < Base
5
+ attr_reader :path, :options
6
+
7
+ def initialize(path, options = {})
8
+ @path = path
9
+ @options = options
10
+ @name = 'convert'
11
+ end
12
+
13
+ def optimize
14
+ return unless jpeg_format?
15
+
16
+ if jpeg_optimizer_present?
17
+ optimize_jpeg
18
+ else
19
+ warn 'Attempting to optimize a jpeg without image magick installed. Skipping...'
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def jpeg_format?
26
+ ['jpeg', 'jpg'].include? extension(path)
27
+ end
28
+
29
+ def extension(path)
30
+ path.split('.').last.downcase
31
+ end
32
+
33
+ def optimize_jpeg
34
+ success = false
35
+ Tempfile.open(filename) do |in_file|
36
+ in_file.binmode
37
+ in_file.write IO.binread(path)
38
+ in_file.close
39
+ success = system(jpeg_optimizer_bin + ' ' + command_options(in_file.path))
40
+ end
41
+ success
42
+ end
43
+
44
+ def command_options(temp_path)
45
+ flags = ['-strip','-interlace Plane']
46
+ flags << max_quantity if (0..100).include?(options[:quality])
47
+ if options[:quiet]
48
+ flags << quiet
49
+ else
50
+ flags << '-verbose'
51
+ end
52
+ flags << temp_path
53
+ flags << path
54
+ flags.join(' ')
55
+ end
56
+
57
+ def max_quantity
58
+ "-quality #{options[:quality]}"
59
+ end
60
+
61
+ def filename
62
+ path.split('/').last
63
+ end
64
+
65
+ def quiet
66
+ '-quiet'
67
+ end
68
+
69
+ def jpeg_optimizer_present?
70
+ !jpeg_optimizer_bin.nil? && !jpeg_optimizer_bin.empty?
71
+ end
72
+
73
+ def jpeg_optimizer_bin
74
+ @jpeg_optimizer_bin ||= binary_path
75
+ end
76
+
77
+ end
78
+ end
@@ -0,0 +1,68 @@
1
+ require "image_optimizer_holder/base"
2
+
3
+ class ImageOptimizerHolder
4
+ class PNGOptimizer < Base
5
+ attr_reader :path, :options
6
+
7
+ def initialize(path, options = {})
8
+ @path = path
9
+ @options = options
10
+ @name = 'pngcrush'
11
+ end
12
+
13
+ def optimize
14
+ return unless png_format?
15
+
16
+ if png_optimizer_present?
17
+ optimize_png
18
+ else
19
+ warn 'Attempting to optimize a png without pngcrush installed. Skipping...'
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def png_format?
26
+ ['png'].include? extension(path)
27
+ end
28
+
29
+ def extension(path)
30
+ path.split('.').last.downcase
31
+ end
32
+
33
+ def optimize_png
34
+ success = false
35
+ Tempfile.open(filename) do |in_file|
36
+ in_file.binmode
37
+ in_file.write IO.binread(path)
38
+ in_file.close
39
+ success = system(png_optimizer_bin, *command_options(in_file.path))
40
+ end
41
+ success
42
+ end
43
+
44
+ def command_options(temp_path)
45
+ flags = ['-rem alla', '-rem text']
46
+ flags << quiet if options[:quiet]
47
+ flags << temp_path
48
+ flags << path
49
+ end
50
+
51
+ def filename
52
+ path.split('/').last
53
+ end
54
+
55
+ def quiet
56
+ '-q'
57
+ end
58
+
59
+ def png_optimizer_present?
60
+ !png_optimizer_bin.nil? && !png_optimizer_bin.empty?
61
+ end
62
+
63
+ def png_optimizer_bin
64
+ @png_optimzer_bin ||= binary_path
65
+ end
66
+
67
+ end
68
+ end
@@ -0,0 +1,3 @@
1
+ class ImageOptimizerHolder
2
+ VERSION = '1.0.1'
3
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe ImageOptimizer::JPEGOptimizer do
4
+ describe '#optimize' do
5
+ let(:jpeg_optimizer) { ImageOptimizer::JPEGOptimizer.new('/path/to/file.jpg') }
6
+
7
+ it 'optimizes the jpeg' do
8
+ jpeg_optimizer.stub(:jpeg_optimizer_bin => '/usr/local/bin/jpegoptim')
9
+ optimizer_options = %w[-f --strip-all --all-progressive /path/to/file.jpg]
10
+ jpeg_optimizer.should_receive(:system).with('/usr/local/bin/jpegoptim', *optimizer_options)
11
+ jpeg_optimizer.optimize
12
+ end
13
+
14
+ it 'warns the user if the jpeg optimizing utility is not installed' do
15
+ jpeg_optimizer.stub(:jpeg_optimizer_bin => '')
16
+ jpeg_optimizer.should_receive(:warn).with('Attempting to optimize a jpeg without jpegoptim installed. Skipping...')
17
+ jpeg_optimizer.optimize
18
+ end
19
+
20
+ it 'detects if there is an ENV variable path to jpegoptim' do
21
+ image_optim_jpegoptim_bin_path = '/app/vendor/bundle/ruby/2.0.0/gems/image_optim_bin-0.0.2/bin/jpegoptim'
22
+ ENV['JPEGOPTIM_BIN'] = image_optim_jpegoptim_bin_path
23
+ optimizer_options = %w[-f --strip-all --all-progressive /path/to/file.jpg]
24
+ jpeg_optimizer.should_receive(:system).with(image_optim_jpegoptim_bin_path, *optimizer_options)
25
+ jpeg_optimizer.optimize
26
+ end
27
+
28
+ it 'accepts an optional quality parameter' do
29
+ jpeg_optimizer = ImageOptimizer::JPEGOptimizer.new('/path/to/file.jpg', :quality => 50)
30
+ jpeg_optimizer.stub(:jpeg_optimizer_bin => '/usr/local/bin/jpegoptim')
31
+ optimizer_options = %w[-f --strip-all --all-progressive --max=50 /path/to/file.jpg]
32
+ jpeg_optimizer.should_receive(:system).with('/usr/local/bin/jpegoptim', *optimizer_options)
33
+ jpeg_optimizer.optimize
34
+ end
35
+
36
+ it 'accepts an optional quiet parameter' do
37
+ jpeg_optimizer = ImageOptimizer::JPEGOptimizer.new('/path/to/file.jpg', :quiet => true)
38
+ jpeg_optimizer.stub(:jpeg_optimizer_bin => '/usr/local/bin/jpegoptim')
39
+ optimizer_options = %w[-f --strip-all --all-progressive --quiet /path/to/file.jpg]
40
+ jpeg_optimizer.should_receive(:system).with('/usr/local/bin/jpegoptim', *optimizer_options)
41
+ jpeg_optimizer.optimize
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe ImageOptimizer::PNGOptimizer do
4
+ describe '#optimize' do
5
+ let(:png_optimizer) { ImageOptimizer::PNGOptimizer.new('/path/to/file.png') }
6
+
7
+ it 'optimizes the png' do
8
+ png_optimizer.stub(:png_optimizer_bin => '/usr/local/bin/pngcrush')
9
+ png_optimizer.should_receive(:system).with('/usr/local/bin/pngcrush', '-o7', '/path/to/file.png')
10
+ png_optimizer.optimize
11
+ end
12
+
13
+ it 'warns the user if the png optimizing utility is not installed' do
14
+ png_optimizer.stub(:png_optimizer_bin => '')
15
+ png_optimizer.should_receive(:warn).with('Attempting to optimize a png without optipng installed. Skipping...')
16
+ png_optimizer.optimize
17
+ end
18
+
19
+ it 'detects if there is an ENV variable path to optipng' do
20
+ image_optim_optipng_bin_path = '/app/vendor/bundle/ruby/2.0.0/gems/image_optim_bin-0.0.2/bin/optipng'
21
+ ENV['OPTIPNG_BIN'] = image_optim_optipng_bin_path
22
+ png_optimizer.should_receive(:system).with(image_optim_optipng_bin_path, '-o7', '/path/to/file.png')
23
+ png_optimizer.optimize
24
+ end
25
+
26
+ it 'accepts an optional quiet parameter' do
27
+ png_optimizer = ImageOptimizer::PNGOptimizer.new('/path/to/file.png', :quiet => true)
28
+ png_optimizer.stub(:png_optimizer_bin => '/usr/local/bin/optipng')
29
+ png_optimizer.should_receive(:system).with('/usr/local/bin/optipng', '-o7', '-quiet', '/path/to/file.png')
30
+ png_optimizer.optimize
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe ImageOptimizer do
4
+ it 'should have a VERSION constant' do
5
+ ImageOptimizer::VERSION.should_not be_empty
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe ImageOptimizer do
4
+ describe '#optimize' do
5
+ it 'delegates to jpeg and png optimizers' do
6
+ ImageOptimizer::JPEGOptimizer.any_instance.should_receive(:optimize)
7
+ ImageOptimizer::PNGOptimizer.any_instance.should_receive(:optimize)
8
+ ImageOptimizer.new('/path/to/image.jpg').optimize
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
4
+ SimpleCov.start
5
+
6
+ $LOAD_PATH << File.expand_path('../../lib', __FILE__)
7
+ require 'image_optimizer'
metadata ADDED
@@ -0,0 +1,154 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: image_optimizer_holder
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Peter Arentsen
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: carrierwave
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.8'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: coveralls
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: mime-types
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.25.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.25.1
97
+ description: A simple image optimizer
98
+ email:
99
+ - peter.arentsen@holder.nl
100
+ executables:
101
+ - pngcrush.x86_64.linux
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - ".gitignore"
106
+ - ".travis.yml"
107
+ - Gemfile
108
+ - LICENSE.txt
109
+ - README.md
110
+ - Rakefile
111
+ - bin/pngcrush.x86_64.linux
112
+ - image_optimizer_holder.gemspec
113
+ - lib/carrierwave_image_optimizer.rb
114
+ - lib/image_optimizer_holder.rb
115
+ - lib/image_optimizer_holder/base.rb
116
+ - lib/image_optimizer_holder/jpeg_optimizer.rb
117
+ - lib/image_optimizer_holder/png_optimizer.rb
118
+ - lib/image_optimizer_holder/version.rb
119
+ - spec/image_optimizer/jpeg_optimizer_spec.rb
120
+ - spec/image_optimizer/png_optimizer_spec.rb
121
+ - spec/image_optimizer/version_spec.rb
122
+ - spec/image_optimizer_spec.rb
123
+ - spec/spec_helper.rb
124
+ homepage: https://github.com/nulian/image_optimizer
125
+ licenses:
126
+ - MIT
127
+ metadata: {}
128
+ post_install_message:
129
+ rdoc_options: []
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ requirements: []
143
+ rubyforge_project:
144
+ rubygems_version: 2.4.2
145
+ signing_key:
146
+ specification_version: 4
147
+ summary: Simply optimize images via imagemagick or pngcrush fork from image_optimizer
148
+ with carrierwave included
149
+ test_files:
150
+ - spec/image_optimizer/jpeg_optimizer_spec.rb
151
+ - spec/image_optimizer/png_optimizer_spec.rb
152
+ - spec/image_optimizer/version_spec.rb
153
+ - spec/image_optimizer_spec.rb
154
+ - spec/spec_helper.rb