image_optimizer 1.7.0 → 1.9.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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +11 -0
- data/README.md +21 -11
- data/certs/jtescher.pem +23 -19
- data/checksum/image_optimizer-1.7.1.gem.sha512 +1 -0
- data/checksum/image_optimizer-1.7.2.gem.sha512 +1 -0
- data/checksum/image_optimizer-1.8.0.gem.sha512 +1 -0
- data/checksum/image_optimizer-1.9.0.gem.sha512 +1 -0
- data/lib/image_optimizer/image_optimizer_base.rb +12 -0
- data/lib/image_optimizer/jpeg_optimizer.rb +1 -1
- data/lib/image_optimizer/png_optimizer.rb +1 -1
- data/lib/image_optimizer/pngquant_optimizer.rb +8 -6
- data/lib/image_optimizer/version.rb +1 -1
- data/lib/image_optimizer.rb +9 -0
- data/spec/image_optimizer/gif_optimizer_spec.rb +8 -0
- data/spec/image_optimizer/jpeg_optimizer_spec.rb +20 -1
- data/spec/image_optimizer/png_optimizer_spec.rb +18 -0
- data/spec/image_optimizer/pngquant_optimizer_spec.rb +37 -8
- data.tar.gz.sig +0 -0
- metadata +34 -26
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 52ece0fb51c602d22fb7c82b8c14a1a47ad2972d6e925226994b8c656484e6cb
|
4
|
+
data.tar.gz: 368aca1eb6b81221e1d130ca0d10490eab127a00a3b991bac4d2fc3bc75d32b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6022872379386db2a408e448a87f1679c2aef82ec40485791da1128cfdac177ea2558c70c12f27537e45c5bb53e94ba067cd99aa4a5f993a6a1782ed6707fd9f
|
7
|
+
data.tar.gz: 9683e4dc3de5849e0240ae0d81c0791cfb466ee5e1e40fc9c748b28789b71b22c3445e8d5c0129810064c212f1c148e77769546787a49ccd6c79c4964e54d728
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
## [1.9.0](https://github.com/jtescher/image_optimizer/releases/tag/v1.9.0) 2022-01-10
|
2
|
+
* add ignore option for compression methods (#23)
|
3
|
+
|
4
|
+
## [1.8.0](https://github.com/jtescher/image_optimizer/releases/tag/v1.8.0) 2018-07-30
|
5
|
+
* Fix: space in file name will break PNGQuantOptimizer - https://github.com/jtescher/image_optimizer/pull/21
|
6
|
+
|
7
|
+
## [1.7.2](https://github.com/jtescher/image_optimizer/releases/tag/v1.7.2) 2018-01-10
|
8
|
+
* Added quiet option support for pngquant optimizer - https://github.com/jtescher/image_optimizer/pull/19
|
9
|
+
|
10
|
+
## [1.7.1](https://github.com/jtescher/image_optimizer/releases/tag/v1.7.1) 2017-11-29
|
11
|
+
* Fix PNGQuantOptimizer `Unrecognised option` error - https://github.com/jtescher/image_optimizer/issues/17
|
data/README.md
CHANGED
@@ -4,14 +4,10 @@ This gem allows you to simply optimize images via jpegoptim or OptiPNG.
|
|
4
4
|
|
5
5
|
Tested against ruby 2.0.x, 2.1.x, 2.2.x, 2.3.x, and ruby-head
|
6
6
|
|
7
|
-
[]
|
8
|
-
(
|
9
|
-
[]
|
12
|
-
(https://codeclimate.com/github/jtescher/image_optimizer)
|
13
|
-
[]
|
14
|
-
(https://coveralls.io/r/jtescher/image_optimizer)
|
7
|
+
[](http://travis-ci.org/jtescher/image_optimizer)
|
8
|
+
[](https://gemnasium.com/jtescher/image_optimizer)
|
9
|
+
[](https://codeclimate.com/github/jtescher/image_optimizer/maintainability)
|
10
|
+
[](https://coveralls.io/r/jtescher/image_optimizer)
|
15
11
|
[](http://badge.fury.io/rb/image_optimizer)
|
16
12
|
|
17
13
|
## Installation
|
@@ -24,7 +20,7 @@ Tested against ruby 2.0.x, 2.1.x, 2.2.x, 2.3.x, and ruby-head
|
|
24
20
|
|
25
21
|
3. Gifsicle, which can be installed from [www.lcdf.org/gifsicle/](https://www.lcdf.org/gifsicle/)
|
26
22
|
|
27
|
-
4. Pngquant, which can be installed from [pngquant.org]https://pngquant.org/
|
23
|
+
4. Pngquant, which can be installed from [pngquant.org](https://pngquant.org/)
|
28
24
|
|
29
25
|
Or install the utilities via homebrew:
|
30
26
|
|
@@ -40,7 +36,7 @@ And then execute:
|
|
40
36
|
|
41
37
|
```bash
|
42
38
|
$ bundle
|
43
|
-
```
|
39
|
+
```
|
44
40
|
|
45
41
|
Or install it yourself as:
|
46
42
|
```bash
|
@@ -62,7 +58,7 @@ Pngquant is a command-line utility and a library for lossy compression of PNG im
|
|
62
58
|
The conversion reduces file sizes significantly (often as much as 70%) and preserves full alpha transparency. Generated images are compatible with all modern web browsers, and have better fallback in IE6 than 24-bit PNGs.
|
63
59
|
|
64
60
|
```ruby
|
65
|
-
PNGQuantOptimizer.new('path/to/file.png').optimize
|
61
|
+
ImageOptimizer::PNGQuantOptimizer.new('path/to/file.png').optimize
|
66
62
|
```
|
67
63
|
|
68
64
|
#### Optimize JPEG formats:
|
@@ -93,6 +89,12 @@ Default is false.
|
|
93
89
|
ImageOptimizer.new('path/to/file.jpg', quiet: true).optimize
|
94
90
|
```
|
95
91
|
|
92
|
+
You can also enable quiet mode globally:
|
93
|
+
|
94
|
+
```ruby
|
95
|
+
ImageOptimizer.quiet = true
|
96
|
+
```
|
97
|
+
|
96
98
|
##### Lossy JPEG optimization
|
97
99
|
|
98
100
|
Pass an optional `quality` parameter to target a specific lossy JPG quality level (0-100), default is lossless
|
@@ -153,6 +155,14 @@ instead of the filename extension, default is false.
|
|
153
155
|
ImageOptimizer.new('path/to/file.jpg', identify: true).optimize
|
154
156
|
```
|
155
157
|
|
158
|
+
##### Ignore compression methods
|
159
|
+
|
160
|
+
You can ignore optimization methods by passing an optional `ignore` parameter with the method name(s). For example, to compress a png ignoring the lossless compression method `optipng`:
|
161
|
+
|
162
|
+
```ruby
|
163
|
+
ImageOptimizer.new('path/to/file.png', ignore: :optipng).optimize
|
164
|
+
```
|
165
|
+
|
156
166
|
## Set bin directories
|
157
167
|
|
158
168
|
Optionally set binary directories with the `OPTIPNG_BIN`, `JPEGOPTIM_BIN` and `IDENTIFY_BIN` environment variables.
|
data/certs/jtescher.pem
CHANGED
@@ -1,21 +1,25 @@
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
2
|
+
MIIENDCCApygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdqdWxp
|
3
|
+
YW4vREM9dGVzY2hlci9EQz1tZTAeFw0yMjAxMTAxNTMyMzFaFw0yMzAxMTAxNTMy
|
4
|
+
MzFaMCIxIDAeBgNVBAMMF2p1bGlhbi9EQz10ZXNjaGVyL0RDPW1lMIIBojANBgkq
|
5
|
+
hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA2NIqnCAvdqMziQRxhBrjOOEy/bpjVakN
|
6
|
+
4SY7DxGzx2C7nSTmIS8KDNVJMJJu+1SjsrE7zZR4YGXsn5EWC9byjUlEbIr+bcYX
|
7
|
+
Kqez1qWEAF5bAHCi2aIQV7DL6EjhuuhHszK921VK52m9/kfLzCGojM+dQGhxsS9R
|
8
|
+
uK8NMZvOnBprEblr58iD9b7wp7Nw8zl3HeYi7QEhFL9wQcIQTtACiRxim+0N0XXK
|
9
|
+
W9Fwk3gB8UaiWEwNdaZJ360+YubO1Q+9/6XnItDl8rvyyzkkPk8qTbqBxo+9qExk
|
10
|
+
dQkaJM2a4u0KBbdpMzSH05lcaHsitvaj9v3OXgXcX1JCJ8PfvjMkRVOj6p490Wv5
|
11
|
+
jgtJ8WsaJuJ0Z8AZK5LdD0DJPEH2ne54IKULsg0+G+kc7TGApxkQ9guJ3DYFMCww
|
12
|
+
NvTZhT5wdoKYi2EmWIMick8NiVWU8JHolHAjWHAMnnzLu1MeQEQdNIcU7+q4Vsti
|
13
|
+
qNQDKfsF14EBoUrdVQw7GhM0YsDflP9vAgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYD
|
14
|
+
VR0PBAQDAgSwMB0GA1UdDgQWBBSjYnqpiURz0CR8srSqAJbZhlIx3TAcBgNVHREE
|
15
|
+
FTATgRFqdWxpYW5AdGVzY2hlci5tZTAcBgNVHRIEFTATgRFqdWxpYW5AdGVzY2hl
|
16
|
+
ci5tZTANBgkqhkiG9w0BAQsFAAOCAYEANc6i+QIto8zFj+y2rHpz197Dg8nYtHnr
|
17
|
+
LjEeNCm3JPyTZNDXbs/W+GArMiukQ3GkIdDgx+e+Q3h8FMdO5L5ObRNeGmBDyEyG
|
18
|
+
M8ubpHxacemSZkfmVyNkDBWOFYQYMJaC2TgmnUnRe5IAuOuWRgvC4kvb1blTsqbP
|
19
|
+
jNDn4Z2FofVroUQsPD8lVw27cUsoA2SmFnS+8ThqVsn/CIEoLkIkOWElAaKqa4z9
|
20
|
+
xU/u+8Mi2o2ndq1k5/WvYn2AAEm+DjJ5jPkSeepYdlNe2ogEeGcWEFmyDJfr0vK3
|
21
|
+
VokEpOHGpz1/CiJnJ08xTGCLOZ13dtclzhILRsP7tTh8+c9XB4SkmuX37dazBUu0
|
22
|
+
pdTkZA65Y5/zNsW4BLHc8h6TyXqpmv6giWKOm6gHdWVrhuVM9GGR4gIJyI5UFISg
|
23
|
+
HgI9vJ9QNRAdHzkP6ToW7r3j6nuszBAcnvJHU+MnONH9mGe7EWado06XjFAgrcA/
|
24
|
+
47H47vSiiTIz55uAos1d8U8682yHT1SQ
|
21
25
|
-----END CERTIFICATE-----
|
@@ -0,0 +1 @@
|
|
1
|
+
dc5be3d00db746d52012b8f61e8c7cc546538180fbbd043bee18e466dccb5454c2e7675d37f2db91ba3db7b513dc7f5a33ed9953c182b5d22035031ed1bc99f2
|
@@ -0,0 +1 @@
|
|
1
|
+
309cf3bfe33c8afccbac2b99ad23dd124ff6230f66a23aec444f22494f3726b3e22fad4656cf72984ed029f1149e4dbfcbdec203b143d259959f41b4825310ae
|
@@ -0,0 +1 @@
|
|
1
|
+
a060c2b8101654118102bbced353085a17155363cd283bf2365f8ade16fa621b83076a06cf1c0635c44ce8ef465fad4a675bcebae616cb86b83e871db67e6e44
|
@@ -0,0 +1 @@
|
|
1
|
+
848760a4bcbf80d14abfa5ac4c752e8f8bc9019bff3f6f3240fbed4ac8c899bac1720a6bbd13bdba021adf5641d6e9e1d17c67d7d472a82ee0d9d85e8bcea22d
|
@@ -9,6 +9,7 @@ class ImageOptimizer
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def optimize
|
12
|
+
return if ignore?
|
12
13
|
return unless correct_format?
|
13
14
|
|
14
15
|
if optimizer_bin?
|
@@ -40,5 +41,16 @@ class ImageOptimizer
|
|
40
41
|
ENV["#{bin_name.upcase}_BIN"] || which(bin_name)
|
41
42
|
end
|
42
43
|
|
44
|
+
def quiet?
|
45
|
+
options[:quiet] || ImageOptimizer.quiet
|
46
|
+
end
|
47
|
+
|
48
|
+
def ignore?
|
49
|
+
ignore.include? bin_name
|
50
|
+
end
|
51
|
+
|
52
|
+
def ignore
|
53
|
+
options[:ignore] ? [options[:ignore]].flatten.map(&:to_s) : []
|
54
|
+
end
|
43
55
|
end
|
44
56
|
end
|
@@ -4,15 +4,17 @@ class ImageOptimizer
|
|
4
4
|
private
|
5
5
|
|
6
6
|
def command_options
|
7
|
-
flags = ['--skip-if-larger', '--speed
|
8
|
-
'--force', '--verbose', '--ext
|
9
|
-
|
7
|
+
flags = ['--skip-if-larger', '--speed=1',
|
8
|
+
'--force', '--verbose', '--ext=.png']
|
9
|
+
|
10
|
+
flags -= ['--verbose'] if quiet?
|
11
|
+
flags << quality
|
10
12
|
flags << path
|
11
13
|
end
|
12
14
|
|
13
|
-
def
|
14
|
-
return "--quality
|
15
|
-
"--quality
|
15
|
+
def quality
|
16
|
+
return "--quality=100" unless (0..100).include?(options[:quality])
|
17
|
+
"--quality=#{options[:quality]}"
|
16
18
|
end
|
17
19
|
|
18
20
|
def extensions
|
data/lib/image_optimizer.rb
CHANGED
@@ -9,6 +9,15 @@ require 'image_optimizer/pngquant_optimizer'
|
|
9
9
|
class ImageOptimizer
|
10
10
|
include Shell
|
11
11
|
|
12
|
+
# Allow the +quiet+ flag to be set globally.
|
13
|
+
@@quiet = false
|
14
|
+
def self.quiet
|
15
|
+
@@quiet
|
16
|
+
end
|
17
|
+
def self.quiet=(value)
|
18
|
+
@@quiet = value
|
19
|
+
end
|
20
|
+
|
12
21
|
attr_reader :path, :options
|
13
22
|
def initialize(path, options = {})
|
14
23
|
@path = path
|
@@ -46,6 +46,14 @@ describe ImageOptimizer::GIFOptimizer do
|
|
46
46
|
subject
|
47
47
|
end
|
48
48
|
end
|
49
|
+
|
50
|
+
context 'with ignore parameter' do
|
51
|
+
let(:options) { { :ignore => :gifsicle } }
|
52
|
+
it 'does not optimize the gif' do
|
53
|
+
expect(gif_optimizer).not_to receive(:system)
|
54
|
+
subject
|
55
|
+
end
|
56
|
+
end
|
49
57
|
end
|
50
58
|
|
51
59
|
|
@@ -53,6 +53,25 @@ describe ImageOptimizer::JPEGOptimizer do
|
|
53
53
|
subject
|
54
54
|
end
|
55
55
|
end
|
56
|
+
|
57
|
+
context 'with global quiet mode enabled' do
|
58
|
+
before { ImageOptimizer.quiet = true }
|
59
|
+
after { ImageOptimizer.quiet = false }
|
60
|
+
|
61
|
+
it 'sets quiet parameter on the command line' do
|
62
|
+
optimizer_options = %w[-f --strip-all --all-progressive --quiet /path/to/file.jpg]
|
63
|
+
expect(jpeg_optimizer).to receive(:system).with('/usr/local/bin/jpegoptim', *optimizer_options)
|
64
|
+
subject
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'with ignore parameter' do
|
69
|
+
let(:options) { { :ignore => :jpegoptim } }
|
70
|
+
it 'does not optimize the jpeg' do
|
71
|
+
expect(jpeg_optimizer).not_to receive(:system)
|
72
|
+
subject
|
73
|
+
end
|
74
|
+
end
|
56
75
|
end
|
57
76
|
|
58
77
|
context 'optimizing utility is not installed' do
|
@@ -66,4 +85,4 @@ describe ImageOptimizer::JPEGOptimizer do
|
|
66
85
|
end
|
67
86
|
end
|
68
87
|
end
|
69
|
-
end
|
88
|
+
end
|
@@ -40,6 +40,16 @@ describe ImageOptimizer::PNGOptimizer do
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
+
context 'with global quiet mode enabled' do
|
44
|
+
before { ImageOptimizer.quiet = true }
|
45
|
+
after { ImageOptimizer.quiet = false }
|
46
|
+
|
47
|
+
it 'sets quiet parameter on the command line' do
|
48
|
+
expect(png_optimizer).to receive(:system).with('/usr/local/bin/optipng', '-o7', '-strip all', '-quiet', '/path/to/file.png')
|
49
|
+
subject
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
43
53
|
context 'without optimization parameter' do
|
44
54
|
it 'optimizes the png with level 7 optimization' do
|
45
55
|
expect(png_optimizer).to receive(:system).with('/usr/local/bin/optipng', '-o7', '-strip all', '/path/to/file.png')
|
@@ -62,6 +72,14 @@ describe ImageOptimizer::PNGOptimizer do
|
|
62
72
|
subject
|
63
73
|
end
|
64
74
|
end
|
75
|
+
|
76
|
+
context 'with ignore parameter' do
|
77
|
+
let(:options) { { :ignore => :optipng } }
|
78
|
+
it 'does not optimize the png' do
|
79
|
+
expect(png_optimizer).not_to receive(:system)
|
80
|
+
subject
|
81
|
+
end
|
82
|
+
end
|
65
83
|
end
|
66
84
|
|
67
85
|
|
@@ -3,7 +3,8 @@ require 'spec_helper'
|
|
3
3
|
describe ImageOptimizer::PNGQuantOptimizer do
|
4
4
|
describe '#optimize' do
|
5
5
|
let(:options) { {} }
|
6
|
-
let(:
|
6
|
+
let(:path) { '/path/to/file.png' }
|
7
|
+
let(:pngquant_optimizer) { ImageOptimizer::PNGQuantOptimizer.new(path, options) }
|
7
8
|
after { ImageOptimizer::PNGQuantOptimizer.instance_variable_set(:@bin, nil) }
|
8
9
|
subject { pngquant_optimizer.optimize }
|
9
10
|
|
@@ -13,8 +14,8 @@ describe ImageOptimizer::PNGQuantOptimizer do
|
|
13
14
|
end
|
14
15
|
|
15
16
|
it 'optimizes the png' do
|
16
|
-
|
17
|
-
expect(pngquant_optimizer).to receive(:system).with(
|
17
|
+
expected_cmd = %w[/usr/local/bin/pngquant --skip-if-larger --speed=1 --force --verbose --ext=.png --quality=100 /path/to/file.png]
|
18
|
+
expect(pngquant_optimizer).to receive(:system).with(*expected_cmd)
|
18
19
|
subject
|
19
20
|
end
|
20
21
|
|
@@ -28,18 +29,46 @@ describe ImageOptimizer::PNGQuantOptimizer do
|
|
28
29
|
end
|
29
30
|
|
30
31
|
it 'should optimize using the given path' do
|
31
|
-
|
32
|
-
expect(pngquant_optimizer).to receive(:system).with(image_pngquant_bin_path, *
|
32
|
+
expected_cmd = %w[--skip-if-larger --speed=1 --force --verbose --ext=.png --quality=100 /path/to/file.png]
|
33
|
+
expect(pngquant_optimizer).to receive(:system).with(image_pngquant_bin_path, *expected_cmd)
|
33
34
|
subject
|
34
35
|
end
|
35
36
|
end
|
36
37
|
|
37
38
|
context 'with quality parameter' do
|
38
|
-
let(:options) { { :quality =>
|
39
|
+
let(:options) { { :quality => 99 } }
|
39
40
|
|
40
41
|
it 'optimizes the png with the quality' do
|
41
|
-
|
42
|
-
expect(pngquant_optimizer).to receive(:system).with(
|
42
|
+
expected_cmd = %w[/usr/local/bin/pngquant --skip-if-larger --speed=1 --force --verbose --ext=.png --quality=99 /path/to/file.png]
|
43
|
+
expect(pngquant_optimizer).to receive(:system).with(*expected_cmd)
|
44
|
+
subject
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'with quiet parameter' do
|
49
|
+
let(:options) { { :quiet => true } }
|
50
|
+
|
51
|
+
it 'optimizes the png with the quality' do
|
52
|
+
expected_cmd = %w[/usr/local/bin/pngquant --skip-if-larger --speed=1 --force --ext=.png --quality=100 /path/to/file.png]
|
53
|
+
expect(pngquant_optimizer).to receive(:system).with(*expected_cmd)
|
54
|
+
subject
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'with ignore parameter' do
|
59
|
+
let(:options) { { :ignore => :pngquant } }
|
60
|
+
it 'does not optimize the png' do
|
61
|
+
expect(pngquant_optimizer).not_to receive(:system)
|
62
|
+
subject
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context 'with space in file name' do
|
67
|
+
let(:path) { '/path/to/file 2.png' }
|
68
|
+
|
69
|
+
it do
|
70
|
+
expected_cmd = %w[/usr/local/bin/pngquant --skip-if-larger --speed=1 --force --verbose --ext=.png --quality=100]
|
71
|
+
expect(pngquant_optimizer).to receive(:system).with(*expected_cmd, path)
|
43
72
|
subject
|
44
73
|
end
|
45
74
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,36 +1,40 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: image_optimizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julian Tescher
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
13
|
+
MIIENDCCApygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdqdWxp
|
14
|
+
YW4vREM9dGVzY2hlci9EQz1tZTAeFw0yMjAxMTAxNTMyMzFaFw0yMzAxMTAxNTMy
|
15
|
+
MzFaMCIxIDAeBgNVBAMMF2p1bGlhbi9EQz10ZXNjaGVyL0RDPW1lMIIBojANBgkq
|
16
|
+
hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA2NIqnCAvdqMziQRxhBrjOOEy/bpjVakN
|
17
|
+
4SY7DxGzx2C7nSTmIS8KDNVJMJJu+1SjsrE7zZR4YGXsn5EWC9byjUlEbIr+bcYX
|
18
|
+
Kqez1qWEAF5bAHCi2aIQV7DL6EjhuuhHszK921VK52m9/kfLzCGojM+dQGhxsS9R
|
19
|
+
uK8NMZvOnBprEblr58iD9b7wp7Nw8zl3HeYi7QEhFL9wQcIQTtACiRxim+0N0XXK
|
20
|
+
W9Fwk3gB8UaiWEwNdaZJ360+YubO1Q+9/6XnItDl8rvyyzkkPk8qTbqBxo+9qExk
|
21
|
+
dQkaJM2a4u0KBbdpMzSH05lcaHsitvaj9v3OXgXcX1JCJ8PfvjMkRVOj6p490Wv5
|
22
|
+
jgtJ8WsaJuJ0Z8AZK5LdD0DJPEH2ne54IKULsg0+G+kc7TGApxkQ9guJ3DYFMCww
|
23
|
+
NvTZhT5wdoKYi2EmWIMick8NiVWU8JHolHAjWHAMnnzLu1MeQEQdNIcU7+q4Vsti
|
24
|
+
qNQDKfsF14EBoUrdVQw7GhM0YsDflP9vAgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYD
|
25
|
+
VR0PBAQDAgSwMB0GA1UdDgQWBBSjYnqpiURz0CR8srSqAJbZhlIx3TAcBgNVHREE
|
26
|
+
FTATgRFqdWxpYW5AdGVzY2hlci5tZTAcBgNVHRIEFTATgRFqdWxpYW5AdGVzY2hl
|
27
|
+
ci5tZTANBgkqhkiG9w0BAQsFAAOCAYEANc6i+QIto8zFj+y2rHpz197Dg8nYtHnr
|
28
|
+
LjEeNCm3JPyTZNDXbs/W+GArMiukQ3GkIdDgx+e+Q3h8FMdO5L5ObRNeGmBDyEyG
|
29
|
+
M8ubpHxacemSZkfmVyNkDBWOFYQYMJaC2TgmnUnRe5IAuOuWRgvC4kvb1blTsqbP
|
30
|
+
jNDn4Z2FofVroUQsPD8lVw27cUsoA2SmFnS+8ThqVsn/CIEoLkIkOWElAaKqa4z9
|
31
|
+
xU/u+8Mi2o2ndq1k5/WvYn2AAEm+DjJ5jPkSeepYdlNe2ogEeGcWEFmyDJfr0vK3
|
32
|
+
VokEpOHGpz1/CiJnJ08xTGCLOZ13dtclzhILRsP7tTh8+c9XB4SkmuX37dazBUu0
|
33
|
+
pdTkZA65Y5/zNsW4BLHc8h6TyXqpmv6giWKOm6gHdWVrhuVM9GGR4gIJyI5UFISg
|
34
|
+
HgI9vJ9QNRAdHzkP6ToW7r3j6nuszBAcnvJHU+MnONH9mGe7EWado06XjFAgrcA/
|
35
|
+
47H47vSiiTIz55uAos1d8U8682yHT1SQ
|
32
36
|
-----END CERTIFICATE-----
|
33
|
-
date:
|
37
|
+
date: 2022-01-10 00:00:00.000000000 Z
|
34
38
|
dependencies:
|
35
39
|
- !ruby/object:Gem::Dependency
|
36
40
|
name: rspec
|
@@ -111,6 +115,7 @@ extra_rdoc_files: []
|
|
111
115
|
files:
|
112
116
|
- ".gitignore"
|
113
117
|
- ".travis.yml"
|
118
|
+
- CHANGELOG.md
|
114
119
|
- Gemfile
|
115
120
|
- LICENSE.txt
|
116
121
|
- README.md
|
@@ -128,6 +133,10 @@ files:
|
|
128
133
|
- checksum/image_optimizer-1.6.0.gem.sha512
|
129
134
|
- checksum/image_optimizer-1.6.1.gem.sha512
|
130
135
|
- checksum/image_optimizer-1.7.0.gem.sha512
|
136
|
+
- checksum/image_optimizer-1.7.1.gem.sha512
|
137
|
+
- checksum/image_optimizer-1.7.2.gem.sha512
|
138
|
+
- checksum/image_optimizer-1.8.0.gem.sha512
|
139
|
+
- checksum/image_optimizer-1.9.0.gem.sha512
|
131
140
|
- image_optimizer.gemspec
|
132
141
|
- lib/image_optimizer.rb
|
133
142
|
- lib/image_optimizer/gif_optimizer.rb
|
@@ -149,7 +158,7 @@ homepage: https://github.com/jtescher/image_optimizer
|
|
149
158
|
licenses:
|
150
159
|
- MIT
|
151
160
|
metadata: {}
|
152
|
-
post_install_message:
|
161
|
+
post_install_message:
|
153
162
|
rdoc_options: []
|
154
163
|
require_paths:
|
155
164
|
- lib
|
@@ -164,9 +173,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
173
|
- !ruby/object:Gem::Version
|
165
174
|
version: '0'
|
166
175
|
requirements: []
|
167
|
-
|
168
|
-
|
169
|
-
signing_key:
|
176
|
+
rubygems_version: 3.2.3
|
177
|
+
signing_key:
|
170
178
|
specification_version: 4
|
171
179
|
summary: Simply optimize images via jpegoptim or OptiPNG or Gifsicle
|
172
180
|
test_files:
|
metadata.gz.sig
CHANGED
Binary file
|