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 CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.5.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "image_resizer"
8
- s.version = "0.4.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-02-15"
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
@@ -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
- it "should return the width" do
11
- @analyzer.width(@image).should == 280
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
- it "should return the height" do
15
- @analyzer.height(@image).should == 355
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
- it "should return the aspect ratio" do
19
- @analyzer.aspect_ratio(@image).should == (280.0/355.0)
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
- it "should say if it's portrait" do
23
- @analyzer.portrait?(@image).should be_true
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
- it "should say if it's landscape" do
27
- @analyzer.landscape?(@image).should be_false
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
- it "should return the number of colours" do
31
- @analyzer.number_of_colours(@image).should == 34703
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
- it "should return the depth" do
35
- @analyzer.depth(@image).should == 8
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
- it "should return the format" do
39
- @analyzer.format(@image).should == :png
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
- it "should say if it's an image" do
54
- @analyzer.image?(@image).should == true
55
- end
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
- it "should say if it's not an image" do
58
- suppressing_stderr do
59
- @analyzer.image?(ImageResizer::TempObject.new('blah')).should == false
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.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-02-15 00:00:00.000000000 Z
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: &2153569580 !ruby/object:Gem::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: *2153569580
24
+ version_requirements: *2168652700
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &2153568720 !ruby/object:Gem::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: *2153568720
35
+ version_requirements: *2168651800
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &2153567680 !ruby/object:Gem::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: *2153567680
46
+ version_requirements: *2168650660
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: pry
49
- requirement: &2153566740 !ruby/object:Gem::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: *2153566740
57
+ version_requirements: *2168649660
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: pry-nav
60
- requirement: &2153565860 !ruby/object:Gem::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: *2153565860
68
+ version_requirements: *2168648620
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry-stack_explorer
71
- requirement: &2153563600 !ruby/object:Gem::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: *2153563600
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: -2071369988750528339
143
+ hash: 3811843699697118744
144
144
  required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  none: false
146
146
  requirements: