geordi 0.14.9 → 0.15.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.
Files changed (3) hide show
  1. data/bin/optimize-png +76 -0
  2. data/lib/geordi/version.rb +1 -1
  3. metadata +25 -40
data/bin/optimize-png ADDED
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # pngcrush -rem allb -reduce -brute original.png optimized.png
4
+ # pngcrush -d target-dir/ *.png
5
+ #
6
+ # -rem allb — remove all extraneous data (Except transparency and gamma; to remove everything except transparency, try -rem alla)
7
+ # -reduce — eliminate unused colors and reduce bit-depth (If possible)
8
+ #
9
+ # -brute — attempt all optimization methods (Requires MUCH MORE processing time and may not improve optimization by much)
10
+ #
11
+ # original.png — the name of the original (unoptimized) PNG file
12
+ # optimized.png — the name of the new, optimized PNG file
13
+ # -d target-dir/ — bulk convert into this directory "target-dir"
14
+ #
15
+ # -rem cHRM -rem sRGB -rem gAMA -rem ICC — remove color profiles by name (shortcut -rem alla)
16
+ #
17
+ # An article explaining why removing gamma correction
18
+ # http://hsivonen.iki.fi/png-gamma/
19
+
20
+ def indented_puts(str="")
21
+ puts " #{str}"
22
+ end
23
+
24
+ def print_manual
25
+ script_name = "optimize-png"
26
+
27
+ indented_puts
28
+ indented_puts script_name
29
+ indented_puts "=" *script_name.size
30
+ indented_puts "- May reduce PNG file size lossless"
31
+ indented_puts "- Removes color profiles: cHRM, sRGB, gAMA, ICC, etc."
32
+ indented_puts "- Eliminates unused colors and reduce bit-depth (If possible)"
33
+ indented_puts
34
+ indented_puts "Batch optimize all *.png in current directory:"
35
+ indented_puts " #{script_name} output_directory"
36
+ indented_puts
37
+ indented_puts "Optimize single file:"
38
+ indented_puts " #{script_name} input.png output.png"
39
+ indented_puts
40
+ end
41
+
42
+ def optimization_default_args
43
+ args = ""
44
+ args << "-rem alla " # remove everything except transparency
45
+ args << "-rem text " # remove text chunks
46
+ args << "-reduce " # eliminate unused colors and reduce bit-depth (If possible)
47
+ args
48
+ end
49
+
50
+ def batch_optimize(script_args)
51
+ output_directory = script_args[0]
52
+ match_pattern = "*.*" # be aware of case sensitivty: *.png wouldn't match IMAGE.PNG # pngcrush does nothing with other files than png
53
+ exec "pngcrush -d #{output_directory} #{optimization_default_args} #{match_pattern}"
54
+ end
55
+
56
+ def single_file_optimize(script_args)
57
+ input_file = script_args[0]
58
+ output_file = script_args[1]
59
+ exec "pngcrush #{optimization_default_args} #{input_file} #{output_file}"
60
+ end
61
+
62
+ def main
63
+ if ARGV.size == 1
64
+ batch_optimize(ARGV)
65
+ elsif ARGV.size == 2
66
+ single_file_optimize(ARGV)
67
+ else
68
+ print_manual
69
+ end
70
+ end
71
+
72
+ main
73
+
74
+
75
+
76
+
@@ -1,3 +1,3 @@
1
1
  module Geordi
2
- VERSION = '0.14.9'
2
+ VERSION = '0.15.0'
3
3
  end
metadata CHANGED
@@ -1,27 +1,21 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: geordi
3
- version: !ruby/object:Gem::Version
4
- hash: 53
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.15.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 14
9
- - 9
10
- version: 0.14.9
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Henning Koch
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-04-10 00:00:00 Z
12
+ date: 2013-04-19 00:00:00.000000000 Z
19
13
  dependencies: []
20
-
21
- description: Collection of command line tools we use in our daily work with Ruby, Rails and Linux at makandra.
22
- email:
14
+ description: Collection of command line tools we use in our daily work with Ruby,
15
+ Rails and Linux at makandra.
16
+ email:
23
17
  - henning.koch@makandra.de
24
- executables:
18
+ executables:
25
19
  - apache-site
26
20
  - b
27
21
  - cap-all
@@ -39,6 +33,7 @@ executables:
39
33
  - launchy_browser
40
34
  - load-dump
41
35
  - migrate-all
36
+ - optimize-png
42
37
  - power-deploy
43
38
  - power-rake
44
39
  - remotify-local-branch
@@ -48,10 +43,8 @@ executables:
48
43
  - shell-for
49
44
  - tests
50
45
  extensions: []
51
-
52
46
  extra_rdoc_files: []
53
-
54
- files:
47
+ files:
55
48
  - .gitignore
56
49
  - Gemfile
57
50
  - README.md
@@ -73,6 +66,7 @@ files:
73
66
  - bin/launchy_browser
74
67
  - bin/load-dump
75
68
  - bin/migrate-all
69
+ - bin/optimize-png
76
70
  - bin/power-deploy
77
71
  - bin/power-rake
78
72
  - bin/remotify-local-branch
@@ -90,37 +84,28 @@ files:
90
84
  - lib/geordi/version.rb
91
85
  homepage: http://makandra.com
92
86
  licenses: []
93
-
94
87
  post_install_message:
95
88
  rdoc_options: []
96
-
97
- require_paths:
89
+ require_paths:
98
90
  - lib
99
- required_ruby_version: !ruby/object:Gem::Requirement
91
+ required_ruby_version: !ruby/object:Gem::Requirement
100
92
  none: false
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- hash: 3
105
- segments:
106
- - 0
107
- version: "0"
108
- required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
109
98
  none: false
110
- requirements:
111
- - - ">="
112
- - !ruby/object:Gem::Version
113
- hash: 3
114
- segments:
115
- - 0
116
- version: "0"
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
117
103
  requirements: []
118
-
119
104
  rubyforge_project: geordi
120
105
  rubygems_version: 1.8.24
121
106
  signing_key:
122
107
  specification_version: 3
123
- summary: Collection of command line tools we use in our daily work with Ruby, Rails and Linux at makandra.
108
+ summary: Collection of command line tools we use in our daily work with Ruby, Rails
109
+ and Linux at makandra.
124
110
  test_files: []
125
-
126
111
  has_rdoc: