image_resizer 0.4.0 → 0.5.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.
- data/VERSION +1 -1
- data/image_resizer.gemspec +2 -2
- data/lib/image_resizer/analyzer.rb +8 -0
- data/lib/image_resizer/utils.rb +4 -0
- data/spec/image_resizer/analyzer_spec.rb +55 -22
- metadata +15 -15
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/image_resizer.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "image_resizer"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.5.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Daniel Nelson"]
|
12
|
-
s.date = "2013-
|
12
|
+
s.date = "2013-04-24"
|
13
13
|
s.description = "Image resizing gem (requires ImageMagick)"
|
14
14
|
s.email = "daniel@populr.me"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -33,6 +33,14 @@ module ImageResizer
|
|
33
33
|
identify(temp_object)[:depth]
|
34
34
|
end
|
35
35
|
|
36
|
+
def quality(temp_object)
|
37
|
+
if match = verbose_identify(temp_object).match(/^\s*Quality: (\d+)$/)
|
38
|
+
match[1].to_i
|
39
|
+
else
|
40
|
+
0
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
36
44
|
def number_of_colours(temp_object)
|
37
45
|
details = raw_identify(temp_object, '-verbose -unique')
|
38
46
|
details[/Colors: (\d+)/, 1].to_i
|
data/lib/image_resizer/utils.rb
CHANGED
@@ -46,6 +46,10 @@ module ImageResizer
|
|
46
46
|
}
|
47
47
|
end
|
48
48
|
|
49
|
+
def verbose_identify(temp_object)
|
50
|
+
raw_identify(temp_object, '-verbose')
|
51
|
+
end
|
52
|
+
|
49
53
|
def raw_identify(temp_object, args='')
|
50
54
|
line = Cocaine::CommandLine.new(identify_command, "#{args} :input")
|
51
55
|
line.run(:input => temp_object.path)
|
@@ -7,36 +7,67 @@ describe ImageResizer::Analyzer do
|
|
7
7
|
@analyzer = ImageResizer::Analyzer.new
|
8
8
|
end
|
9
9
|
|
10
|
-
|
11
|
-
|
10
|
+
describe "#width" do
|
11
|
+
it "should return the width" do
|
12
|
+
@analyzer.width(@image).should == 280
|
13
|
+
end
|
12
14
|
end
|
13
15
|
|
14
|
-
|
15
|
-
|
16
|
+
describe "#height" do
|
17
|
+
it "should return the height" do
|
18
|
+
@analyzer.height(@image).should == 355
|
19
|
+
end
|
16
20
|
end
|
17
21
|
|
18
|
-
|
19
|
-
|
22
|
+
describe "#aspect_ratio" do
|
23
|
+
it "should return the aspect ratio" do
|
24
|
+
@analyzer.aspect_ratio(@image).should == (280.0/355.0)
|
25
|
+
end
|
20
26
|
end
|
21
27
|
|
22
|
-
|
23
|
-
|
28
|
+
describe "#portrait?" do
|
29
|
+
it "should say if it's portrait" do
|
30
|
+
@analyzer.portrait?(@image).should be_true
|
31
|
+
end
|
24
32
|
end
|
25
33
|
|
26
|
-
|
27
|
-
|
34
|
+
describe "#landscape?" do
|
35
|
+
it "should say if it's landscape" do
|
36
|
+
@analyzer.landscape?(@image).should be_false
|
37
|
+
end
|
28
38
|
end
|
29
39
|
|
30
|
-
|
31
|
-
|
40
|
+
describe "#number_of_colours" do
|
41
|
+
it "should return the number of colours" do
|
42
|
+
@analyzer.number_of_colours(@image).should == 34703
|
43
|
+
end
|
32
44
|
end
|
33
45
|
|
34
|
-
|
35
|
-
|
46
|
+
describe "#depth" do
|
47
|
+
it "should return the depth" do
|
48
|
+
@analyzer.depth(@image).should == 8
|
49
|
+
end
|
36
50
|
end
|
37
51
|
|
38
|
-
|
39
|
-
|
52
|
+
describe "#quality" do
|
53
|
+
context "when the image is a jpeg" do
|
54
|
+
it "should return the depth" do
|
55
|
+
@image = ImageResizer::TempObject.new(SAMPLES_DIR.join('beach.jpg'))
|
56
|
+
@analyzer.quality(@image).should == 92
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context "when the image is a png" do
|
61
|
+
it "should return 0" do
|
62
|
+
@analyzer.quality(@image).should == 0
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "#format" do
|
68
|
+
it "should return the format" do
|
69
|
+
@analyzer.format(@image).should == :png
|
70
|
+
end
|
40
71
|
end
|
41
72
|
|
42
73
|
%w(width height aspect_ratio number_of_colours depth format portrait? landscape?).each do |meth|
|
@@ -50,13 +81,15 @@ describe ImageResizer::Analyzer do
|
|
50
81
|
end
|
51
82
|
end
|
52
83
|
|
53
|
-
|
54
|
-
|
55
|
-
|
84
|
+
describe "#image?" do
|
85
|
+
it "should say if it's an image" do
|
86
|
+
@analyzer.image?(@image).should == true
|
87
|
+
end
|
56
88
|
|
57
|
-
|
58
|
-
|
59
|
-
|
89
|
+
it "should say if it's not an image" do
|
90
|
+
suppressing_stderr do
|
91
|
+
@analyzer.image?(ImageResizer::TempObject.new('blah')).should == false
|
92
|
+
end
|
60
93
|
end
|
61
94
|
end
|
62
95
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: image_resizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cocaine
|
16
|
-
requirement: &
|
16
|
+
requirement: &2168652700 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2168652700
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &2168651800 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2168651800
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jeweler
|
38
|
-
requirement: &
|
38
|
+
requirement: &2168650660 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2168650660
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: pry
|
49
|
-
requirement: &
|
49
|
+
requirement: &2168649660 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2168649660
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: pry-nav
|
60
|
-
requirement: &
|
60
|
+
requirement: &2168648620 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2168648620
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: pry-stack_explorer
|
71
|
-
requirement: &
|
71
|
+
requirement: &2168646840 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2168646840
|
80
80
|
description: Image resizing gem (requires ImageMagick)
|
81
81
|
email: daniel@populr.me
|
82
82
|
executables: []
|
@@ -140,7 +140,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
140
140
|
version: '0'
|
141
141
|
segments:
|
142
142
|
- 0
|
143
|
-
hash:
|
143
|
+
hash: 3811843699697118744
|
144
144
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
145
|
none: false
|
146
146
|
requirements:
|