snapimage 0.0.5 → 0.0.6
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/lib/snapimage/image/image.rb +13 -10
- data/lib/snapimage/server_actions/server_actions.generate_image.rb +6 -22
- data/lib/snapimage/storage/storage_server.rb +3 -5
- data/lib/snapimage/version.rb +1 -1
- data/spec/snapimage/image/image_spec.rb +20 -36
- data/spec/snapimage/storage/storage_server_spec.rb +4 -4
- metadata +3 -3
@@ -29,12 +29,14 @@ module SnapImage
|
|
29
29
|
# Arguments:
|
30
30
|
# * path:: Local path or URL
|
31
31
|
def set_image_from_path(path)
|
32
|
+
destroy!
|
32
33
|
@image = Magick::ImageList.new(path)
|
33
34
|
end
|
34
35
|
|
35
36
|
# Arguments:
|
36
37
|
# * blob:: Image blob
|
37
38
|
def set_image_from_blob(blob)
|
39
|
+
destroy!
|
38
40
|
@image = Magick::ImageList.new
|
39
41
|
@image.from_blob(blob)
|
40
42
|
end
|
@@ -42,6 +44,7 @@ module SnapImage
|
|
42
44
|
# Arguments:
|
43
45
|
# * image:: RMagick Image
|
44
46
|
def set_image_from_image(image)
|
47
|
+
destroy!
|
45
48
|
@image = image
|
46
49
|
end
|
47
50
|
|
@@ -58,11 +61,10 @@ module SnapImage
|
|
58
61
|
end
|
59
62
|
|
60
63
|
def destroy!
|
61
|
-
@image.destroy!
|
64
|
+
@image.destroy! if @image && !@image.destroyed?
|
62
65
|
end
|
63
66
|
|
64
|
-
# Crops the image with the given parameters
|
65
|
-
# object.
|
67
|
+
# Crops the image with the given parameters.
|
66
68
|
#
|
67
69
|
# Arguments:
|
68
70
|
# * x:: x coordinate of the top left corner
|
@@ -70,10 +72,10 @@ module SnapImage
|
|
70
72
|
# * width:: width of the crop rectangle
|
71
73
|
# * height:: height of the crop rectangle
|
72
74
|
def crop(x, y, width, height)
|
73
|
-
|
75
|
+
@image.crop!(x, y, width, height)
|
74
76
|
end
|
75
77
|
|
76
|
-
#
|
78
|
+
# Resizes the image with the given paramaters.
|
77
79
|
#
|
78
80
|
# Arguments:
|
79
81
|
# * width:: Width to resize to
|
@@ -85,16 +87,17 @@ module SnapImage
|
|
85
87
|
# resizing.
|
86
88
|
height ||= [width, @image.rows].max
|
87
89
|
if maintain_aspect_ratio
|
88
|
-
|
90
|
+
@image.resize_to_fit!(width, height)
|
89
91
|
else
|
90
|
-
|
92
|
+
@image.resize!(width, height)
|
91
93
|
end
|
92
94
|
end
|
93
95
|
|
94
|
-
#
|
95
|
-
# object.
|
96
|
+
# Sharpens the image.
|
96
97
|
def sharpen
|
97
|
-
|
98
|
+
image = @image.sharpen
|
99
|
+
destroy!
|
100
|
+
@image = image
|
98
101
|
end
|
99
102
|
end
|
100
103
|
end
|
@@ -26,7 +26,7 @@ module SnapImage
|
|
26
26
|
image_height: stored_image.height
|
27
27
|
)
|
28
28
|
# Release memory.
|
29
|
-
|
29
|
+
GC.start
|
30
30
|
else
|
31
31
|
@response.set_bad_request
|
32
32
|
end
|
@@ -122,10 +122,7 @@ module SnapImage
|
|
122
122
|
width: @request.json["crop_width"],
|
123
123
|
height: @request.json["crop_height"]
|
124
124
|
}
|
125
|
-
|
126
|
-
# Release memory.
|
127
|
-
image.destroy!
|
128
|
-
image = cropped_image
|
125
|
+
image.crop(crop[:x], crop[:y], crop[:width], crop[:height])
|
129
126
|
end
|
130
127
|
|
131
128
|
# Resize.
|
@@ -136,34 +133,21 @@ module SnapImage
|
|
136
133
|
if width && height
|
137
134
|
# When both width and height are specified, resize without
|
138
135
|
# maintaining the aspect ratio.
|
139
|
-
|
136
|
+
image.resize(width, height, false)
|
140
137
|
else
|
141
138
|
# When only one of width/height is specified, set the other to the
|
142
139
|
# max and maintain the aspect ratio.
|
143
|
-
|
140
|
+
image.resize(width || @config["max_width"], height || @config["max_height"])
|
144
141
|
end
|
145
|
-
# Release memeory.
|
146
|
-
image.destroy!
|
147
|
-
image = resized_image
|
148
142
|
end
|
149
143
|
|
150
144
|
# Resize to fit.
|
151
145
|
resized_to_fit = resize_to_fit?(image)
|
152
|
-
if resized_to_fit
|
153
|
-
resized_image = image.resize(get_max_width, get_max_height)
|
154
|
-
# Release memeory.
|
155
|
-
image.destroy!
|
156
|
-
image = resized_image
|
157
|
-
end
|
146
|
+
image.resize(get_max_width, get_max_height) if resized_to_fit
|
158
147
|
|
159
148
|
# Sharpen.
|
160
149
|
sharpened = sharpen?
|
161
|
-
if sharpened
|
162
|
-
sharpened_image = image.sharpen
|
163
|
-
# Release memeory.
|
164
|
-
image.destroy!
|
165
|
-
image = sharpened_image
|
166
|
-
end
|
150
|
+
image.sharpen if sharpened
|
167
151
|
|
168
152
|
# Get the dimensions at the end.
|
169
153
|
if cropped || resized || resized_to_fit || sharpened
|
@@ -99,13 +99,11 @@ module SnapImage
|
|
99
99
|
def resize_to_fit(image, name)
|
100
100
|
# Resize the image if it's larger than the max width/height.
|
101
101
|
if image.width > @config["max_width"] || image.height > @config["max_height"]
|
102
|
-
|
102
|
+
image.resize([image.width, @config["max_width"]].min, [image.height, @config["max_height"]].min)
|
103
103
|
# Generate a new name.
|
104
|
-
|
105
|
-
# Release memory.
|
106
|
-
image.destroy!
|
104
|
+
name = SnapImage::ImageNameUtils.get_resized_image_name(name, image.width, image.height)
|
107
105
|
end
|
108
|
-
{ image:
|
106
|
+
{ image: image, name: name }
|
109
107
|
end
|
110
108
|
end
|
111
109
|
end
|
data/lib/snapimage/version.rb
CHANGED
@@ -9,20 +9,12 @@ describe SnapImage::Image do
|
|
9
9
|
before do
|
10
10
|
@image = SnapImage::Image.new
|
11
11
|
@image.set_image_from_path(@image_path)
|
12
|
-
@original_width = @image.width
|
13
|
-
@original_height = @image.height
|
14
12
|
end
|
15
13
|
|
16
|
-
it "
|
17
|
-
|
18
|
-
image.width.should eq 20
|
19
|
-
image.height.should eq 30
|
20
|
-
end
|
21
|
-
|
22
|
-
it "does not modify the original image" do
|
23
|
-
image = @image.crop(10, 30, 20, 30)
|
24
|
-
@image.width.should eq @original_width
|
25
|
-
@image.height.should eq @original_height
|
14
|
+
it "correctly crops image" do
|
15
|
+
@image.crop(10, 30, 20, 30)
|
16
|
+
@image.width.should eq 20
|
17
|
+
@image.height.should eq 30
|
26
18
|
end
|
27
19
|
end
|
28
20
|
|
@@ -30,42 +22,34 @@ describe SnapImage::Image do
|
|
30
22
|
before do
|
31
23
|
@image = SnapImage::Image.new
|
32
24
|
@image.set_image_from_path(@image_path)
|
33
|
-
@original_width = @image.width
|
34
|
-
@original_height = @image.height
|
35
25
|
end
|
36
26
|
|
37
27
|
it "raises an error when no height is specified and maintaining aspect ratio is false" do
|
38
28
|
expect { @image.resize(100, nil, false) }.should raise_error
|
39
29
|
end
|
40
30
|
|
41
|
-
it "
|
42
|
-
|
43
|
-
image.width.should eq 330
|
44
|
-
image.height.should eq 220
|
45
|
-
end
|
46
|
-
|
47
|
-
it "returns an appropriately resized image when the width is less than the height" do
|
48
|
-
image = @image.resize(150)
|
49
|
-
image.width.should eq 150
|
50
|
-
image.height.should eq 100
|
31
|
+
it "resizes the image when the width is larger or equal to the height" do
|
32
|
+
@image.resize(330)
|
33
|
+
@image.width.should eq 330
|
34
|
+
@image.height.should eq 220
|
51
35
|
end
|
52
36
|
|
53
|
-
it "
|
54
|
-
|
55
|
-
image.width.should eq 150
|
56
|
-
image.height.should eq 100
|
37
|
+
it "resizes the image when the width is less than the height" do
|
38
|
+
@image.resize(150)
|
39
|
+
@image.width.should eq 150
|
40
|
+
@image.height.should eq 100
|
57
41
|
end
|
58
42
|
|
59
|
-
it "
|
60
|
-
|
61
|
-
image.width.should eq
|
62
|
-
image.height.should eq
|
43
|
+
it "resizes the image to fit within the width/height while maintaining aspect ratio" do
|
44
|
+
@image.resize(150, 200)
|
45
|
+
@image.width.should eq 150
|
46
|
+
@image.height.should eq 100
|
63
47
|
end
|
64
48
|
|
65
|
-
it "
|
66
|
-
|
67
|
-
@image.width.should eq
|
68
|
-
@image.height.should eq
|
49
|
+
it "stretches image when not maintaining aspect ratio" do
|
50
|
+
@image.resize(100, 200, false)
|
51
|
+
@image.width.should eq 100
|
52
|
+
@image.height.should eq 200
|
69
53
|
end
|
70
54
|
end
|
71
55
|
end
|
@@ -79,16 +79,16 @@ describe SnapImage::StorageServer::Base do
|
|
79
79
|
end
|
80
80
|
|
81
81
|
it "returns the resized image and name given a base image" do
|
82
|
-
|
83
|
-
result = @server.send(:resize_to_fit, image, "12345678-2048x100.png")
|
82
|
+
@image.resize(2048, 100, false)
|
83
|
+
result = @server.send(:resize_to_fit, @image, "12345678-2048x100.png")
|
84
84
|
result[:image].width.should eq 1024
|
85
85
|
result[:image].height.should eq 50
|
86
86
|
result[:name].should eq "12345678-1024x50.png"
|
87
87
|
end
|
88
88
|
|
89
89
|
it "returns the resized image and name given a modified image" do
|
90
|
-
|
91
|
-
result = @server.send(:resize_to_fit, image, "12345678-1x1-0x0x1x1-2048x100-0.png")
|
90
|
+
@image.resize(2048, 100, false)
|
91
|
+
result = @server.send(:resize_to_fit, @image, "12345678-1x1-0x0x1x1-2048x100-0.png")
|
92
92
|
result[:image].width.should eq 1024
|
93
93
|
result[:image].height.should eq 50
|
94
94
|
result[:name].should eq "12345678-1x1-0x0x1x1-1024x50-0.png"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: snapimage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -222,7 +222,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
222
222
|
version: '0'
|
223
223
|
segments:
|
224
224
|
- 0
|
225
|
-
hash:
|
225
|
+
hash: 1128448920208195157
|
226
226
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
227
|
none: false
|
228
228
|
requirements:
|
@@ -231,7 +231,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
231
231
|
version: '0'
|
232
232
|
segments:
|
233
233
|
- 0
|
234
|
-
hash:
|
234
|
+
hash: 1128448920208195157
|
235
235
|
requirements: []
|
236
236
|
rubyforge_project:
|
237
237
|
rubygems_version: 1.8.23
|