image_optimizer 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NjE3ODlhNDA0YjBhZTdlODNlNGViZmYzNWZjZGU0NmU5NWE5NzJjZg==
4
+ ZGQwZDcwZDNiZjQ5ODMwNTEzNzU3ZWY2MzM5MzMzMDg2Zjk3Y2YzNg==
5
5
  data.tar.gz: !binary |-
6
- MzM2NGEyZWNkNzdlNGRkOGQ0OTUyMzIzZDYyNWJmYWZiNjFkNWU1Mw==
7
- !binary "U0hBNTEy":
6
+ Zjc2OGU1NGQyNzFhMDcxMDVkYzQ5OWJjMDliMjgwZjAxNzliZjg5Mg==
7
+ SHA512:
8
8
  metadata.gz: !binary |-
9
- ZjUwZTJlZDM1ZTg5NWFiMjk5ZTEzNjAxM2FlYTc0NDA5YjA5OTk5YzAzMjUz
10
- OWYwZTNlNzEwNzU5MWUzNTA1NGUxM2I5ZDY1MWFhZjE0ODE2OTMyM2NlOGI2
11
- MTUzYTc0NjkzM2YwMGUzNGFlZmEzNTI3ODYzMjcyMTg5OTFmYmI=
9
+ ZWI3ZDQ2YjgxNzVjYjk5ZGY5NDE3ZDZjY2RjNGM1MGI3NmQ4MDA5OTc2MDk2
10
+ MzEwZmIxOTMwNTdiMmEzNzg1YzU3MjgwNGRkY2RmMDc1NjdhNWVhMjI2M2Vj
11
+ MmVkZTdkMTc1MjI1MDRiMTI5MzNjZGU3ZWYxNWJhMmUxNTcxNjU=
12
12
  data.tar.gz: !binary |-
13
- OTI0YjAwMmU2NDMzNWRlMDllNTczNDU5ZmUwZmUxOWYzMDQzMTc0YWNmZjI4
14
- MzQ1N2NmZTE2N2Q1YWZjYTljNGQ5OTRkNjA5NjgxYjQxMmM5NmZmZTI1ZGVk
15
- NDkxMWI3MTRhNzE3MTQ1MGE4MWVlYTVjZGRhM2IxOTQ4OGQ5ZjA=
13
+ ZTk1ZGM2M2IzMTQ0ZDZlM2Q3MGRlYmQwZTk3OWUwZTcwMjQzNWFmYzYzMmJl
14
+ YjVjMDc4YzAwNTViOTA1NTA4ZGQzMDgwOGIzYWI0NmYxMGU0NDdiMTk0NzVj
15
+ YmVjOTlmM2ZjMmM4OGNhMGU2NWM0NjZkNjkxYTA3ZjdiYjUzNWY=
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
@@ -1,2 +1 @@
1
- �>��D������D��Ϻ`� F����gYm�r�[���{�2i��ʼnoU.Ðn8:?x}���7�ד����$|�Y�/c;H�m.�,/��H
2
- kr�
1
+ ���tgk#\�����e8����w���/�s`�O ծz�܋��"����������ڂ��h�>��n}չJ�@'Z&���s?��@o�S�)�:?����r��hYPӶ�4}�ٕ\�z <"BIW!� ��E{�|S2� KIw��y*�S��a��j�:#����6���(㣎Nf��D�k����q~B�ʦ�BMZ�(l:�qax��4� �N.=���9���$ξ��}�<�*ZF�v�'�=C�KI�зUWu�
data/.travis.yml CHANGED
@@ -3,10 +3,11 @@ rvm:
3
3
  - jruby-18mode
4
4
  - jruby-19mode
5
5
  - jruby-head
6
- - 1.9.3
6
+ - 1.8.7
7
7
  - 1.9.2
8
+ - 1.9.3
9
+ - 2.0.0
10
+ - ruby-head
8
11
  - rbx-18mode
9
12
  - rbx-19mode
10
- - ruby-head
11
- - 1.8.7
12
- - ree
13
+ - ree
data/README.md CHANGED
@@ -2,16 +2,18 @@
2
2
 
3
3
  This gem allows you to simply optimize images via jpegoptim or OptiPNG.
4
4
 
5
- Tested against ruby 1.8.7, 1.9.2, 1.9.3, ruby-head, jruby-18mode, jruby-19mode, jruby-head, rbx-18mode, rbx-19mode, and
6
- ree
5
+ Tested against ruby 1.8.7, 1.9.2, 1.9.3, 2.0.0, ruby-head, jruby-18mode, jruby-19mode, jruby-head, rbx-18mode,
6
+ rbx-19mode, and ree
7
7
 
8
8
  [![Build Status](https://secure.travis-ci.org/jtescher/image_optimizer.png)]
9
9
  (http://travis-ci.org/jtescher/image_optimizer)
10
10
  [![Dependency Status](https://gemnasium.com/jtescher/image_optimizer.png)]
11
11
  (https://gemnasium.com/jtescher/image_optimizer)
12
- [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/jtescher/image_optimizer)
12
+ [![Code Climate](https://codeclimate.com/github/jtescher/image_optimizer.png)]
13
+ (https://codeclimate.com/github/jtescher/image_optimizer)
13
14
  [![Coverage Status](https://coveralls.io/repos/jtescher/image_optimizer/badge.png)]
14
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)
15
17
 
16
18
  ## Installation
17
19
 
@@ -56,11 +58,22 @@ ImageOptimizer.new('path/to/file.png').optimize
56
58
  #### Optimize JPEG formats:
57
59
 
58
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
59
62
 
60
63
  ```ruby
61
64
  ImageOptimizer.new('path/to/file.jpg').optimize
62
65
  ```
63
66
 
67
+ ##### Lossy JPEG optimization
68
+
69
+ Pass an optional `quality` parameter to target a specific lossy JPG quality level (0-100), default is lossless
70
+ optimization. PNGs will ignore the quality setting.
71
+
72
+ ```ruby
73
+ ImageOptimizer.new('path/to/file.jpg', quality: 80).optimize
74
+ ```
75
+
76
+
64
77
  ## Contributing
65
78
 
66
79
  1. Fork it
@@ -20,8 +20,9 @@ Gem::Specification.new do |gem|
20
20
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
21
21
  gem.require_paths = ["lib"]
22
22
 
23
- gem.add_development_dependency "rspec", "~> 2.14.1"
24
- gem.add_development_dependency "rake", "~> 10.1.0"
25
- gem.add_development_dependency "simplecov", "~> 0.7.1"
26
- gem.add_development_dependency "coveralls", "~> 0.6.7"
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"
27
28
  end
@@ -1,16 +1,17 @@
1
- require "image_optimizer/version"
2
- require "image_optimizer/jpeg_optimizer"
3
- require "image_optimizer/png_optimizer"
1
+ require 'image_optimizer/version'
2
+ require 'image_optimizer/jpeg_optimizer'
3
+ require 'image_optimizer/png_optimizer'
4
4
 
5
5
  class ImageOptimizer
6
- attr_reader :path
6
+ attr_reader :path, :options
7
7
 
8
- def initialize(path)
9
- @path = path
8
+ def initialize(path, options = {})
9
+ @path = path
10
+ @options = options
10
11
  end
11
12
 
12
13
  def optimize
13
- JPEGOptimizer.new(path).optimize
14
+ JPEGOptimizer.new(path, options).optimize
14
15
  PNGOptimizer.new(path).optimize
15
16
  end
16
- end
17
+ end
@@ -1,9 +1,10 @@
1
1
  class ImageOptimizer
2
2
  class JPEGOptimizer
3
- attr_reader :path
3
+ attr_reader :path, :quality
4
4
 
5
- def initialize(path)
5
+ def initialize(path, options = {})
6
6
  @path = path
7
+ @quality = options[:quality]
7
8
  end
8
9
 
9
10
  def optimize
@@ -23,11 +24,15 @@ class ImageOptimizer
23
24
  end
24
25
 
25
26
  def extension(path)
26
- path.split(".").last.downcase
27
+ path.split('.').last.downcase
27
28
  end
28
29
 
29
30
  def optimize_jpeg
30
- system "#{jpeg_optimizer_bin} -f --strip-all #{path}"
31
+ system "#{jpeg_optimizer_bin} -f --strip-all #{optional_max_quality} --all-progressive #{path}"
32
+ end
33
+
34
+ def optional_max_quality
35
+ "--max=#{quality}" if (0..100).include?(quality)
31
36
  end
32
37
 
33
38
  def jpeg_optimizer_present?
@@ -23,7 +23,7 @@ class ImageOptimizer
23
23
  end
24
24
 
25
25
  def extension(path)
26
- path.split(".").last.downcase
26
+ path.split('.').last.downcase
27
27
  end
28
28
 
29
29
  def optimize_png
@@ -1,3 +1,3 @@
1
1
  class ImageOptimizer
2
- VERSION = "1.1.0"
2
+ VERSION = '1.2.0'
3
3
  end
@@ -7,7 +7,8 @@ describe ImageOptimizer::JPEGOptimizer do
7
7
 
8
8
  it 'optimizes the jpeg' do
9
9
  jpeg_optimizer.stub(:jpeg_optimizer_bin => '/usr/local/bin/jpegoptim')
10
- jpeg_optimizer.should_receive(:system).with("/usr/local/bin/jpegoptim -f --strip-all #{file_path}")
10
+ optimizer_options = '-f --strip-all --all-progressive'
11
+ jpeg_optimizer.should_receive(:system).with("/usr/local/bin/jpegoptim #{optimizer_options} #{file_path}")
11
12
  jpeg_optimizer.optimize
12
13
  end
13
14
 
@@ -20,7 +21,16 @@ describe ImageOptimizer::JPEGOptimizer do
20
21
  it 'detects if there is an ENV variable path to jpegoptim' do
21
22
  image_optim_jpegoptim_bin_path = '/app/vendor/bundle/ruby/2.0.0/gems/image_optim_bin-0.0.2/bin/jpegoptim'
22
23
  ENV['JPEGOPTIM_BIN'] = image_optim_jpegoptim_bin_path
23
- jpeg_optimizer.should_receive(:system).with("#{image_optim_jpegoptim_bin_path} -f --strip-all #{file_path}")
24
+ optimizer_options = '-f --strip-all --all-progressive'
25
+ jpeg_optimizer.should_receive(:system).with("#{image_optim_jpegoptim_bin_path} #{optimizer_options} #{file_path}")
26
+ jpeg_optimizer.optimize
27
+ end
28
+
29
+ it 'accepts an optional quality parameter' do
30
+ jpeg_optimizer = ImageOptimizer::JPEGOptimizer.new(file_path, :quality => 50)
31
+ jpeg_optimizer.stub(:jpeg_optimizer_bin => '/usr/local/bin/jpegoptim')
32
+ optimizer_options = '-f --strip-all --max=50 --all-progressive'
33
+ jpeg_optimizer.should_receive(:system).with("/usr/local/bin/jpegoptim #{optimizer_options} #{file_path}")
24
34
  jpeg_optimizer.optimize
25
35
  end
26
36
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ImageOptimizer do
4
- it "should have a VERSION constant" do
4
+ it 'should have a VERSION constant' do
5
5
  ImageOptimizer::VERSION.should_not be_empty
6
6
  end
7
- end
7
+ end
@@ -1,11 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ImageOptimizer do
4
- describe "#optimize" do
4
+ describe '#optimize' do
5
5
  it 'delegates to jpeg and png optimizers' do
6
6
  ImageOptimizer::JPEGOptimizer.any_instance.should_receive(:optimize)
7
7
  ImageOptimizer::PNGOptimizer.any_instance.should_receive(:optimize)
8
8
  ImageOptimizer.new('/path/to/image.jpg').optimize
9
9
  end
10
10
  end
11
- end
11
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image_optimizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Tescher
@@ -35,64 +35,78 @@ cert_chain:
35
35
  V3NaK2F3dzJpU05DNVhGaEEvOHhzSzBCbHRZUkY5blAKSEE0MVV0RHhySmtI
36
36
  TDNOMXo4Z1BNWFNyRlQ0MUZSMndnazgrbDE0UCs3ZzFVVFBpZDJFSXdmdDJ4
37
37
  T2JGZUE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
38
- date: 2013-08-06 00:00:00.000000000 Z
38
+ date: 2013-12-04 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rspec
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ~>
44
+ - - ! '>='
45
45
  - !ruby/object:Gem::Version
46
- version: 2.14.1
46
+ version: '0'
47
47
  type: :development
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - ~>
51
+ - - ! '>='
52
52
  - !ruby/object:Gem::Version
53
- version: 2.14.1
53
+ version: '0'
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: rake
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - ~>
58
+ - - ! '>='
59
59
  - !ruby/object:Gem::Version
60
- version: 10.1.0
60
+ version: '0'
61
61
  type: :development
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - ~>
65
+ - - ! '>='
66
66
  - !ruby/object:Gem::Version
67
- version: 10.1.0
67
+ version: '0'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: simplecov
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ~>
72
+ - - ! '>='
73
73
  - !ruby/object:Gem::Version
74
- version: 0.7.1
74
+ version: '0'
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - ~>
79
+ - - ! '>='
80
80
  - !ruby/object:Gem::Version
81
- version: 0.7.1
81
+ version: '0'
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: coveralls
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: mime-types
84
98
  requirement: !ruby/object:Gem::Requirement
85
99
  requirements:
86
100
  - - ~>
87
101
  - !ruby/object:Gem::Version
88
- version: 0.6.7
102
+ version: 1.25.1
89
103
  type: :development
90
104
  prerelease: false
91
105
  version_requirements: !ruby/object:Gem::Requirement
92
106
  requirements:
93
107
  - - ~>
94
108
  - !ruby/object:Gem::Version
95
- version: 0.6.7
109
+ version: 1.25.1
96
110
  description: A simple image optimizer
97
111
  email:
98
112
  - jatescher@gmail.com
@@ -137,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
151
  version: '0'
138
152
  requirements: []
139
153
  rubyforge_project:
140
- rubygems_version: 2.0.3
154
+ rubygems_version: 2.1.5
141
155
  signing_key:
142
156
  specification_version: 4
143
157
  summary: Simply optimize images via jpegoptim or OptiPNG
metadata.gz.sig CHANGED
Binary file