image-optimizer 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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: