photile 0.1.0.pre → 0.1.2.pre

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/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