photile 0.1.0.pre → 0.1.2.pre

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -12,6 +12,11 @@ task :build do
12
12
  system 'gem build photile.gemspec && gem install ./*.gem --pre && rm *.gem'
13
13
  end
14
14
 
15
+ desc "Deploy gem to Rubygems repo"
16
+ task :deploy
17
+ #`gem build photile.gemspec && gem push hola-0.0.0.gem && rm *.gem`
18
+ end
19
+
15
20
  desc "Build docs"
16
21
  task :docs do
17
22
  `rdoc`
@@ -21,3 +26,8 @@ desc "Uninstalls the gem"
21
26
  task :uninstall do
22
27
  system 'gem uninstall photile'
23
28
  end
29
+
30
+ desc "Cleans generated files"
31
+ task :clean do
32
+ `rm tmp/test*.jpeg 2>&1`
33
+ end
data/bin/photile CHANGED
@@ -1,46 +1,21 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'photile'
4
- require 'optparse'
5
4
 
6
- options = []
7
-
8
- optparse = OptionParser.new do|opts|
9
- opts.banner = "Usage: photile [options] infile outfile"
10
-
11
- opts.on('-q', '--quality VALUE', Integer, 'Modify image quality') do |value|
12
- options << {:quality => value}
13
- end
14
-
15
- opts.on('-c', '--compress', 'Loss-less compress image') do
16
- options << {:compress => true}
17
- end
18
-
19
- opts.on('-w', '--watermark FILE', String, 'Watermark with given file') do |file|
20
- options << {:watermark => file}
21
- end
22
-
23
- opts.on('-t', '--tile WIDTHxHEIGHT', Regexp.new(/\d+x\d+/), 'Tile to the given dimensions') do |dimensions|
24
- dim = dimensions.split('x')
25
- options << {:tile => {:width => dim.first.to_i, :height => dim.last.to_i}}
5
+ config = Photile::Cli.parse
6
+
7
+ config[:options].each do |opt|
8
+ opt.each do |key,val|
9
+ case key
10
+ when :quality
11
+ `convert #{config[:infile]} -quality #{val} #{config[:outfile]}`
12
+ when :compress
13
+ `cp #{config[:infile]} #{config[:outfile]} && jpegtran -copy none -optimize -perfect -outfile #{config[:outfile]} #{config[:outfile]}`
14
+ when :watermark
15
+ `composite -gravity center #{val} #{config[:infile]} #{config[:outfile]}`
16
+ when :tile
17
+ `convert #{config[:infile]} -crop #{val[:width]}x#{val[:height]} +repage +adjoin #{config[:outfile].split('.').join('%03d.')}`
18
+ end
19
+ config[:infile] = config[:outfile]
26
20
  end
27
-
28
- opts.on('-h', '--help', 'Display options help') do
29
- puts opts
30
- exit
31
- end
32
- end
33
-
34
- begin
35
- optparse.parse!
36
-
37
- if options.empty?
38
- puts optparse
39
- exit
40
- end
41
-
42
- puts options
43
- rescue OptionParser::InvalidArgument => ia
44
- puts ia
45
- exit
46
21
  end
data/lib/photile.rb CHANGED
@@ -1,63 +1,4 @@
1
- =begin
2
- namespace :image do
3
-
4
- desc "Displays the size of an image"
5
- task :size do
6
- size = `identify tmp/original.jpeg`.split(" ")[6]
7
- puts "Image size: #{size}"
8
- end
9
-
10
- desc "Changes the quality of an image"
11
- task :quality do
12
- `convert tmp/original.jpeg -quality 70 tmp/quality70.jpeg`
13
- size = `identify tmp/quality70.jpeg`.split(" ")[6]
14
- puts "Image size: #{size}"
15
- end
16
-
17
- desc "Changes the quality of an image with 2 compressions"
18
- task :quality_advanced do
19
- `convert tmp/original.jpeg -quality 70 tmp/quality70.jpeg`
20
- `jpegtran -copy none -optimize -perfect -outfile tmp/quality70.jpeg tmp/quality70.jpeg`
21
- size = `identify tmp/quality70.jpeg`.split(" ")[6]
22
- puts "Image size: #{size}"
23
- end
24
-
25
- desc "Applies a watermark to an image"
26
- task :watermark do
27
- `composite -gravity center tmp/watermark.png tmp/original.jpeg tmp/watermarked.jpeg`
28
- size = `identify tmp/watermarked.jpeg`.split(" ")[6]
29
- puts "Watermarked image. Image size: #{size}"
30
- end
31
-
32
- desc "Tiles an image by chopping it up into fragments"
33
- task :tile do
34
- `convert tmp/original.jpeg -crop 300x300 +repage +adjoin tmp/tile_%02d.jpeg`
35
- end
36
-
37
- desc "Cleans up temporary files generated"
38
- task :clean do
39
- `rm tmp/quality70.jpeg 2>&1`
40
- `rm tmp/watermarked.jpeg 2>&1`
41
- `rm tmp/tile_*.jpeg 2>&1`
42
- end
43
-
44
- end
45
- =end
46
- # The main Photile driver
47
1
  class Photile
48
-
49
- # Say hi to the world!
50
- #
51
- # Example:
52
- # >> Photile.hi("spanish")
53
- # => hola mundo
54
- #
55
- # Arguments:
56
- # language: (String)
57
- def self.hi(language = "english")
58
- translator = Translator.new(language)
59
- puts translator.hi
60
- end
61
2
  end
62
3
 
63
- require 'photile/translator'
4
+ require 'photile/cli'
@@ -0,0 +1,48 @@
1
+ require 'optparse'
2
+
3
+ class Photile::Cli
4
+ def self.parse
5
+ options = []
6
+
7
+ optparse = OptionParser.new do|opts|
8
+ opts.banner = "Usage: photile [options] infile outfile"
9
+
10
+ opts.on('-q', '--quality VALUE', Integer, 'Modify image quality') do |value|
11
+ options << {:quality => value}
12
+ end
13
+
14
+ opts.on('-c', '--compress', 'Loss-less compress image') do
15
+ options << {:compress => true}
16
+ end
17
+
18
+ opts.on('-w', '--watermark FILE', String, 'Watermark with given file') do |file|
19
+ options << {:watermark => file}
20
+ end
21
+
22
+ opts.on('-t', '--tile WIDTHxHEIGHT', Regexp.new(/\d+x\d+/), 'Tile to the given dimensions') do |dimensions|
23
+ dim = dimensions.split('x')
24
+ options << {:tile => {:width => dim.first.to_i, :height => dim.last.to_i}}
25
+ end
26
+
27
+ opts.on('-h', '--help', 'Display options help') do
28
+ puts opts
29
+ exit
30
+ end
31
+ end
32
+
33
+ begin
34
+ optparse.parse!
35
+
36
+ if options.empty? || ARGV.size != 2
37
+ puts optparse
38
+ exit
39
+ end
40
+
41
+ {:options => options, :infile => ARGV.first, :outfile => ARGV.last}
42
+ rescue OptionParser::InvalidArgument => ia
43
+ puts ia
44
+ puts optparse
45
+ exit
46
+ end
47
+ end
48
+ end
data/photile.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'photile'
3
- s.version = '0.1.0.pre'
3
+ s.version = '0.1.2.pre'
4
4
  s.date = '2012-11-02'
5
5
  s.summary = 'A ruby gem to chop a photo into tiles, watermark them, etc.'
6
6
  s.description = 'Photile is just a layer on top of Imagemagick and Jpegtran to make certain image processing tasks dead simple.'
data/test/test_photile.rb CHANGED
@@ -2,8 +2,7 @@ require 'test/unit'
2
2
  require 'photile'
3
3
 
4
4
  class PhotileTest < Test::Unit::TestCase
5
- def test_english_hello
6
- assert_equal "hello world", Photile.hi("english")
5
+ def test_stub
6
+ assert true
7
7
  end
8
-
9
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: photile
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre
4
+ version: 0.1.2.pre
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -41,7 +41,7 @@ files:
41
41
  - Rakefile
42
42
  - bin/photile
43
43
  - lib/photile.rb
44
- - lib/photile/translator.rb
44
+ - lib/photile/cli.rb
45
45
  - photile.gemspec
46
46
  - test/test_photile.rb
47
47
  homepage: https://github.com/nitindhar7/photile
@@ -1,14 +0,0 @@
1
- class Photile::Translator
2
- def initialize(language)
3
- @language = language
4
- end
5
-
6
- def hi
7
- case @language
8
- when "spanish"
9
- "hola mundo"
10
- else
11
- "hello world"
12
- end
13
- end
14
- end