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