image-optimizer 0.2.1 → 0.2.2

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.
data/Gemfile CHANGED
@@ -8,6 +8,7 @@ source "http://rubygems.org"
8
8
  # Add dependencies to develop your gem here.
9
9
  # Include everything needed to run rake, tests, features, etc.
10
10
  group :development do
11
- gem "bundler", ">= 1.0.14"
12
- gem "jeweler2", ">= 2.0.0"
11
+ gem "bundler"
12
+ gem "jeweler"
13
+ gem "rake"
13
14
  end
data/Gemfile.lock CHANGED
@@ -4,15 +4,22 @@ GEM
4
4
  abstract (1.0.0)
5
5
  facade (1.0.5)
6
6
  git (1.2.5)
7
- hash-utils (2.0.0)
8
- ruby-version
9
- jeweler2 (2.0.9)
7
+ hash-utils (2.0.2)
8
+ ruby-version (>= 0.4.0)
9
+ jeweler (1.8.4)
10
+ bundler (~> 1.0)
10
11
  git (>= 1.2.5)
12
+ rake
13
+ rdoc
14
+ json (1.7.5)
11
15
  multitype-introspection (0.2.0)
12
16
  hash-utils (>= 0.16.0)
13
17
  pathname2 (1.6.5)
14
18
  facade
15
- ruby-version (0.3.1)
19
+ rake (0.9.2.2)
20
+ rdoc (3.12)
21
+ json (~> 1.4)
22
+ ruby-version (0.4.2)
16
23
  types (0.1.3)
17
24
  abstract (>= 1.0.0)
18
25
  multitype-introspection (>= 0.1.0)
@@ -26,8 +33,9 @@ PLATFORMS
26
33
  ruby
27
34
 
28
35
  DEPENDENCIES
29
- bundler (>= 1.0.14)
36
+ bundler
30
37
  hash-utils (>= 2.0.0)
31
- jeweler2 (>= 2.0.0)
38
+ jeweler
39
+ rake
32
40
  which
33
41
  yaop (>= 0.2.0)
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ rescue Bundler::BundlerError => e
12
12
  end
13
13
 
14
14
  require 'rake'
15
- require 'jeweler2'
15
+ require 'jeweler'
16
16
 
17
17
  Jeweler::Tasks.new do |gem|
18
18
  # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
data/bin/image-optimizer CHANGED
@@ -20,7 +20,7 @@ if opts.arguments["--help"]
20
20
  puts "\t--verbose be verbose"
21
21
  exit
22
22
  elsif opts.arguments["--version"]
23
- puts "image-optimizer 0.2.0"
23
+ puts "image-optimizer 0.2.2"
24
24
  puts "Copyright (C) 2011-2012 Martin Kozák (martinkozak@martinkozak.net)"
25
25
  puts
26
26
  puts "Optimizes given JPEG and PNG images or all images in given folders."
@@ -68,4 +68,4 @@ if verbose
68
68
  delta = total - total_new
69
69
  ratio = (delta / total.to_f) * 100
70
70
  puts "In total: " + delta.to_s + " B (" + ratio.round.to_s + " %)"
71
- end
71
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "image-optimizer"
8
- s.version = "0.2.1"
8
+ s.version = "0.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Martin Koz\u{e1}k"]
12
- s.date = "2012-08-06"
12
+ s.date = "2012-10-11"
13
13
  s.email = "martinkozak@martinkozak.net"
14
14
  s.executables = ["image-optimizer"]
15
15
  s.extra_rdoc_files = [
@@ -44,21 +44,24 @@ Gem::Specification.new do |s|
44
44
  s.add_runtime_dependency(%q<yaop>, [">= 0.2.0"])
45
45
  s.add_runtime_dependency(%q<which>, [">= 0"])
46
46
  s.add_runtime_dependency(%q<hash-utils>, [">= 2.0.0"])
47
- s.add_development_dependency(%q<bundler>, [">= 1.0.14"])
48
- s.add_development_dependency(%q<jeweler2>, [">= 2.0.0"])
47
+ s.add_development_dependency(%q<bundler>, [">= 0"])
48
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
49
+ s.add_development_dependency(%q<rake>, [">= 0"])
49
50
  else
50
51
  s.add_dependency(%q<yaop>, [">= 0.2.0"])
51
52
  s.add_dependency(%q<which>, [">= 0"])
52
53
  s.add_dependency(%q<hash-utils>, [">= 2.0.0"])
53
- s.add_dependency(%q<bundler>, [">= 1.0.14"])
54
- s.add_dependency(%q<jeweler2>, [">= 2.0.0"])
54
+ s.add_dependency(%q<bundler>, [">= 0"])
55
+ s.add_dependency(%q<jeweler>, [">= 0"])
56
+ s.add_dependency(%q<rake>, [">= 0"])
55
57
  end
56
58
  else
57
59
  s.add_dependency(%q<yaop>, [">= 0.2.0"])
58
60
  s.add_dependency(%q<which>, [">= 0"])
59
61
  s.add_dependency(%q<hash-utils>, [">= 2.0.0"])
60
- s.add_dependency(%q<bundler>, [">= 1.0.14"])
61
- s.add_dependency(%q<jeweler2>, [">= 2.0.0"])
62
+ s.add_dependency(%q<bundler>, [">= 0"])
63
+ s.add_dependency(%q<jeweler>, [">= 0"])
64
+ s.add_dependency(%q<rake>, [">= 0"])
62
65
  end
63
66
  end
64
67
 
@@ -22,54 +22,72 @@ module ImageOptimizer
22
22
  block.call(path.dup, ImageOptimizer::BEFORE)
23
23
 
24
24
  # New method (GIMP & XcfTools)
25
- if ImageOptimizer.available? :gimp and ImageOptimizer.available? :xcf2png
26
- dirname = File.dirname(path)
27
- basename = File.basename(path, '.png')
28
- basepath = dirname + '/' + basename
29
- png_path = basepath + '.png'
30
- xcf_path = basepath + '.xcf'
31
- protect = File.exists? xcf_path
25
+ if ImageOptimizer.available? :gimp and ImageOptimizer.available? :xcf2png and ImageOptimizer.available? :convert
32
26
 
33
- if protect
34
- protect = Dir.tmpdir + '/' + File.basename(xcf_path)
35
- FileUtils.mv(xcf_path, protect)
36
- end
37
-
38
- # GIMP
39
- block.call(:gimp, ImageOptimizer::METHOD)
40
- gimp = File.read(File.dirname(__FILE__) + '/png.script')
41
- gimp.gsub!(':path', png_path)
42
- `#{gimp}`
27
+ Dir.mktmpdir do |tmpdir|
28
+ original_size = File.size(path)
29
+ dirname = tmpdir
30
+ basename = File.basename(path, '.png')
31
+ basepath = dirname + '/' + basename
32
+ png_path = basepath + '.png'
33
+ xcf_path = basepath + '.xcf'
34
+ tif_path = basepath + '.tif'
35
+
36
+ # ImageMagick
37
+ block.call(:mogrify, ImageOptimizer::METHOD)
38
+ `convert #{path_escaped} #{Shellwords::escape(tif_path)} 2> /dev/null`
39
+
40
+ # GIMP
41
+ block.call(:gimp, ImageOptimizer::METHOD)
42
+ gimp = File.read(File.dirname(__FILE__) + '/png.script')
43
+ gimp.gsub!(':path', tif_path)
44
+ `#{gimp}`
43
45
 
44
- # xcf2png
45
- block.call(:xcf2png, ImageOptimizer::METHOD)
46
- `xcf2png #{Shellwords::escape(xcf_path)} > #{Shellwords::escape(png_path)} 2> /dev/null`
47
- FileUtils.rm(xcf_path)
48
-
49
- if protect
50
- FileUtils.mv(protect, xcf_path)
46
+ # xcf2png
47
+ block.call(:xcf2png, ImageOptimizer::METHOD)
48
+ `xcf2png #{Shellwords::escape(xcf_path)} > #{Shellwords::escape(png_path)} 2> /dev/null`
49
+
50
+ # General optimizers
51
+ self.__general_optimizers(png_path, &block)
52
+
53
+ # Copy back
54
+ new_size = File.size(png_path)
55
+ if new_size < original_size
56
+ FileUtils.cp(png_path, path)
57
+ end
58
+
51
59
  end
52
-
60
+
53
61
  # Old method (ImageMagick)
54
- elsif ImageOptimizer.available? :convert
62
+ elsif ImageOptimizer.available? :mogrify
63
+
64
+ # Mogrify
55
65
  block.call(:convert, ImageOptimizer::METHOD)
56
- `convert #{path_escaped} -quality 100 #{path_escaped} 2> /dev/null`
66
+ `mogrify #{path_escaped} -quality 100 2> /dev/null`
67
+
68
+ # General optimizers
69
+ self.__general_optimizers(path, &block)
70
+
57
71
  end
58
72
 
59
- # General optimizers
73
+ # Calls back
74
+ block.call(path.dup, ImageOptimizer::AFTER)
75
+
76
+ end
77
+
78
+ private
79
+
80
+ def self.__general_optimizers(path, &block)
81
+ path_escaped = Shellwords::escape(path)
82
+
60
83
  if ImageOptimizer.available? :optipng
61
84
  block.call(:optipng, ImageOptimizer::METHOD)
62
85
  `optipng -o 7 #{path_escaped} 2> /dev/null`
63
86
  elsif ImageOptimizer.available? :pngcrush
64
87
  block.call(:pngcrush, ImageOptimizer::METHOD)
65
88
  `pngcrush -reduce -brute -ow #{path_escaped} 2> /dev/null`
66
-
67
- end
68
-
69
- # calls back
70
- block.call(path.dup, ImageOptimizer::AFTER)
71
-
89
+ end
72
90
  end
73
91
 
74
92
  end
75
- end
93
+ 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: 0.2.1
4
+ version: 0.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-06 00:00:00.000000000 Z
12
+ date: 2012-10-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: yaop
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ! '>='
68
68
  - !ruby/object:Gem::Version
69
- version: 1.0.14
69
+ version: '0'
70
70
  type: :development
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,15 +74,15 @@ dependencies:
74
74
  requirements:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
- version: 1.0.14
77
+ version: '0'
78
78
  - !ruby/object:Gem::Dependency
79
- name: jeweler2
79
+ name: jeweler
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
83
83
  - - ! '>='
84
84
  - !ruby/object:Gem::Version
85
- version: 2.0.0
85
+ version: '0'
86
86
  type: :development
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,7 +90,23 @@ dependencies:
90
90
  requirements:
91
91
  - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
- version: 2.0.0
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: rake
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
94
110
  description:
95
111
  email: martinkozak@martinkozak.net
96
112
  executables:
@@ -128,7 +144,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
144
  version: '0'
129
145
  segments:
130
146
  - 0
131
- hash: 4132611269577949455
147
+ hash: 735012564858542787
132
148
  required_rubygems_version: !ruby/object:Gem::Requirement
133
149
  none: false
134
150
  requirements: