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 +10 -0
- data/bin/photile +15 -40
- data/lib/photile.rb +1 -60
- data/lib/photile/cli.rb +48 -0
- data/photile.gemspec +1 -1
- data/test/test_photile.rb +2 -3
- metadata +2 -2
- data/lib/photile/translator.rb +0 -14
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
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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/
|
4
|
+
require 'photile/cli'
|
data/lib/photile/cli.rb
ADDED
@@ -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.
|
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
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.
|
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/
|
44
|
+
- lib/photile/cli.rb
|
45
45
|
- photile.gemspec
|
46
46
|
- test/test_photile.rb
|
47
47
|
homepage: https://github.com/nitindhar7/photile
|