riiif 1.7.1 → 2.0.0.beta1
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.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +15 -41
- data/Gemfile +1 -37
- data/app/models/riiif/file.rb +19 -12
- data/app/models/riiif/image.rb +13 -12
- data/app/models/riiif/image_information.rb +4 -0
- data/app/models/riiif/transformation.rb +35 -0
- data/{lib → app/resolvers}/riiif/abstract_file_system_resolver.rb +0 -0
- data/{lib → app/resolvers}/riiif/akubra_system_file_resolver.rb +0 -0
- data/{lib → app/resolvers}/riiif/file_system_file_resolver.rb +0 -0
- data/{lib → app/resolvers}/riiif/http_file_resolver.rb +0 -0
- data/app/services/riiif/command_runner.rb +2 -0
- data/app/services/riiif/crop.rb +54 -0
- data/app/services/riiif/imagemagick_command_factory.rb +20 -19
- data/app/services/riiif/imagemagick_transformer.rb +8 -0
- data/app/services/riiif/kakadu_command_factory.rb +63 -0
- data/app/services/riiif/link_name_service.rb +8 -0
- data/{lib → app/services}/riiif/nil_authorization_service.rb +0 -0
- data/app/services/riiif/option_decoder.rb +11 -11
- data/app/services/riiif/region/absolute.rb +23 -0
- data/app/services/riiif/region/full.rb +23 -0
- data/app/services/riiif/region/percentage.rb +68 -0
- data/app/services/riiif/region/square.rb +45 -0
- data/app/services/riiif/resize.rb +45 -0
- data/app/services/riiif/size/absolute.rb +39 -0
- data/app/services/riiif/size/best_fit.rb +18 -0
- data/app/services/riiif/size/full.rb +17 -0
- data/app/services/riiif/size/height.rb +24 -0
- data/app/services/riiif/size/percent.rb +44 -0
- data/app/services/riiif/size/width.rb +24 -0
- data/app/transformers/riiif/abstract_transformer.rb +30 -0
- data/app/transformers/riiif/imagemagick_transformer.rb +8 -0
- data/app/transformers/riiif/kakadu_transformer.rb +39 -0
- data/lib/riiif.rb +4 -7
- data/lib/riiif/engine.rb +4 -3
- data/lib/riiif/version.rb +1 -1
- data/riiif.gemspec +1 -1
- data/spec/models/riiif/image_spec.rb +6 -3
- data/spec/models/riiif/transformation_spec.rb +42 -0
- data/spec/services/riiif/imagemagick_command_factory_spec.rb +6 -4
- data/spec/services/riiif/kakadu_command_factory_spec.rb +85 -0
- data/spec/services/riiif/region/absolute_spec.rb +17 -0
- data/spec/services/riiif/size/absolute_spec.rb +17 -0
- data/spec/services/riiif/size/height_spec.rb +13 -0
- data/spec/services/riiif/size/width_spec.rb +13 -0
- data/spec/transformers/riiif/kakadu_transformer_spec.rb +143 -0
- metadata +45 -22
- data/app/services/riiif/region/imagemagick/absolute_decoder.rb +0 -21
- data/app/services/riiif/region/imagemagick/full_decoder.rb +0 -14
- data/app/services/riiif/region/imagemagick/percentage_decoder.rb +0 -33
- data/app/services/riiif/region/imagemagick/square_decoder.rb +0 -25
- data/app/services/riiif/size/imagemagick/absolute_decoder.rb +0 -20
- data/app/services/riiif/size/imagemagick/best_fit_decoder.rb +0 -19
- data/app/services/riiif/size/imagemagick/full_decoder.rb +0 -14
- data/app/services/riiif/size/imagemagick/height_decoder.rb +0 -19
- data/app/services/riiif/size/imagemagick/percent_decoder.rb +0 -19
- data/app/services/riiif/size/imagemagick/width_decoder.rb +0 -19
@@ -0,0 +1,143 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Riiif::KakaduTransformer do
|
6
|
+
subject(:instance) { described_class.new(path, image_info, transformation) }
|
7
|
+
|
8
|
+
let(:image_info) { Riiif::ImageInformation.new(6501, 4381) }
|
9
|
+
let(:path) { 'baseball.jp2' }
|
10
|
+
let(:region) { Riiif::Region::Full.new(image_info) }
|
11
|
+
let(:size) { Riiif::Size::Full.new }
|
12
|
+
let(:quality) { nil }
|
13
|
+
let(:rotation) { nil }
|
14
|
+
let(:fmt) { 'jpg' }
|
15
|
+
|
16
|
+
let(:transformation) do
|
17
|
+
Riiif::Transformation.new(region,
|
18
|
+
size,
|
19
|
+
quality,
|
20
|
+
rotation,
|
21
|
+
fmt)
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#transform' do
|
25
|
+
let(:image_data) { double }
|
26
|
+
|
27
|
+
subject(:transform) { instance.transform }
|
28
|
+
|
29
|
+
before do
|
30
|
+
allow(instance).to receive(:with_tempfile).and_yield('/tmp/foo.bmp')
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'resize and region' do
|
34
|
+
# This is the validator test for size_region
|
35
|
+
let(:size) { Riiif::Size::Absolute.new(image_info, 38, 38) }
|
36
|
+
let(:region) { Riiif::Region::Absolute.new(image_info, 200, 100, 100, 100) }
|
37
|
+
|
38
|
+
let(:image_info) { Riiif::ImageInformation.new(1000, 1000) }
|
39
|
+
|
40
|
+
it 'calls the Imagemagick transform' do
|
41
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
42
|
+
.with('kdu_expand -quiet -i baseball.jp2 -num_threads 4 ' \
|
43
|
+
'-region "{0.1,0.2},{0.1,0.1}" -reduce 4 -o /tmp/foo.bmp')
|
44
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
45
|
+
.with('convert -resize 38x38! -quality 85 -sampling-factor 4:2:0 -strip /tmp/foo.bmp jpg:-')
|
46
|
+
transform
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'when reduction_factor is 0' do
|
51
|
+
let(:reduction_factor) { 0 }
|
52
|
+
context 'and the size is full' do
|
53
|
+
it 'calls the Imagemagick transform' do
|
54
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
55
|
+
.with('kdu_expand -quiet -i baseball.jp2 -num_threads 4 -o /tmp/foo.bmp')
|
56
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
57
|
+
.with('convert -quality 85 -sampling-factor 4:2:0 -strip /tmp/foo.bmp jpg:-')
|
58
|
+
transform
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'and size is a width' do
|
63
|
+
let(:size) { Riiif::Size::Width.new(image_info, 651) }
|
64
|
+
let(:image_info) { Riiif::ImageInformation.new(1000, 1000) }
|
65
|
+
|
66
|
+
it 'calls the Imagemagick transform' do
|
67
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
68
|
+
.with('kdu_expand -quiet -i baseball.jp2 -num_threads 4 -o /tmp/foo.bmp')
|
69
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
70
|
+
.with('convert -resize 651 -quality 85 -sampling-factor 4:2:0 -strip /tmp/foo.bmp jpg:-')
|
71
|
+
transform
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'and size is a height' do
|
76
|
+
let(:size) { Riiif::Size::Height.new(image_info, 581) }
|
77
|
+
let(:image_info) { Riiif::ImageInformation.new(1000, 1000) }
|
78
|
+
|
79
|
+
it 'calls the Imagemagick transform' do
|
80
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
81
|
+
.with('kdu_expand -quiet -i baseball.jp2 -num_threads 4 -o /tmp/foo.bmp')
|
82
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
83
|
+
.with('convert -resize x581 -quality 85 -sampling-factor 4:2:0 -strip /tmp/foo.bmp jpg:-')
|
84
|
+
transform
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
context 'when reduction_factor is 1' do
|
90
|
+
let(:reduction_factor) { 1 }
|
91
|
+
|
92
|
+
context 'and size is a Percent' do
|
93
|
+
let(:size) { Riiif::Size::Percent.new(image_info, 30) }
|
94
|
+
|
95
|
+
it 'calls the Imagemagick transform' do
|
96
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
97
|
+
.with('kdu_expand -quiet -i baseball.jp2 -num_threads 4 -reduce 1 -o /tmp/foo.bmp')
|
98
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
99
|
+
.with('convert -resize 60.0% -quality 85 -sampling-factor 4:2:0 -strip /tmp/foo.bmp jpg:-')
|
100
|
+
transform
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
context 'and size is a width' do
|
105
|
+
let(:size) { Riiif::Size::Width.new(image_info, 408) }
|
106
|
+
let(:image_info) { Riiif::ImageInformation.new(1000, 1000) }
|
107
|
+
|
108
|
+
it 'calls the Imagemagick transform' do
|
109
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
110
|
+
.with('kdu_expand -quiet -i baseball.jp2 -num_threads 4 -reduce 1 -o /tmp/foo.bmp')
|
111
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
112
|
+
.with('convert -resize 408 -quality 85 -sampling-factor 4:2:0 -strip /tmp/foo.bmp jpg:-')
|
113
|
+
transform
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
context 'and size is a height' do
|
118
|
+
let(:size) { Riiif::Size::Height.new(image_info, 481) }
|
119
|
+
let(:image_info) { Riiif::ImageInformation.new(1000, 1000) }
|
120
|
+
|
121
|
+
it 'calls the Imagemagick transform' do
|
122
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
123
|
+
.with('kdu_expand -quiet -i baseball.jp2 -num_threads 4 -reduce 1 -o /tmp/foo.bmp')
|
124
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
125
|
+
.with('convert -resize x481 -quality 85 -sampling-factor 4:2:0 -strip /tmp/foo.bmp jpg:-')
|
126
|
+
transform
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
context 'when reduction_factor is 2' do
|
132
|
+
let(:size) { Riiif::Size::Percent.new(image_info, 20) }
|
133
|
+
let(:reduction_factor) { 2 }
|
134
|
+
it 'calls the Imagemagick transform' do
|
135
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
136
|
+
.with('kdu_expand -quiet -i baseball.jp2 -num_threads 4 -reduce 2 -o /tmp/foo.bmp')
|
137
|
+
expect(Riiif::CommandRunner).to receive(:execute)
|
138
|
+
.with('convert -resize 80.0% -quality 85 -sampling-factor 4:2:0 -strip /tmp/foo.bmp jpg:-')
|
139
|
+
transform
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riiif
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Coyne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -78,14 +78,14 @@ dependencies:
|
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
81
|
+
version: '0.8'
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
88
|
+
version: '0.8'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: rspec-rails
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -177,28 +177,37 @@ files:
|
|
177
177
|
- app/models/riiif/file.rb
|
178
178
|
- app/models/riiif/image.rb
|
179
179
|
- app/models/riiif/image_information.rb
|
180
|
+
- app/models/riiif/transformation.rb
|
181
|
+
- app/resolvers/riiif/abstract_file_system_resolver.rb
|
182
|
+
- app/resolvers/riiif/akubra_system_file_resolver.rb
|
183
|
+
- app/resolvers/riiif/file_system_file_resolver.rb
|
184
|
+
- app/resolvers/riiif/http_file_resolver.rb
|
180
185
|
- app/services/riiif/command_runner.rb
|
186
|
+
- app/services/riiif/crop.rb
|
181
187
|
- app/services/riiif/image_magick_info_extractor.rb
|
182
188
|
- app/services/riiif/imagemagick_command_factory.rb
|
189
|
+
- app/services/riiif/imagemagick_transformer.rb
|
190
|
+
- app/services/riiif/kakadu_command_factory.rb
|
191
|
+
- app/services/riiif/link_name_service.rb
|
192
|
+
- app/services/riiif/nil_authorization_service.rb
|
183
193
|
- app/services/riiif/option_decoder.rb
|
184
|
-
- app/services/riiif/region/
|
185
|
-
- app/services/riiif/region/
|
186
|
-
- app/services/riiif/region/
|
187
|
-
- app/services/riiif/region/
|
188
|
-
- app/services/riiif/
|
189
|
-
- app/services/riiif/size/
|
190
|
-
- app/services/riiif/size/
|
191
|
-
- app/services/riiif/size/
|
192
|
-
- app/services/riiif/size/
|
193
|
-
- app/services/riiif/size/
|
194
|
+
- app/services/riiif/region/absolute.rb
|
195
|
+
- app/services/riiif/region/full.rb
|
196
|
+
- app/services/riiif/region/percentage.rb
|
197
|
+
- app/services/riiif/region/square.rb
|
198
|
+
- app/services/riiif/resize.rb
|
199
|
+
- app/services/riiif/size/absolute.rb
|
200
|
+
- app/services/riiif/size/best_fit.rb
|
201
|
+
- app/services/riiif/size/full.rb
|
202
|
+
- app/services/riiif/size/height.rb
|
203
|
+
- app/services/riiif/size/percent.rb
|
204
|
+
- app/services/riiif/size/width.rb
|
205
|
+
- app/transformers/riiif/abstract_transformer.rb
|
206
|
+
- app/transformers/riiif/imagemagick_transformer.rb
|
207
|
+
- app/transformers/riiif/kakadu_transformer.rb
|
194
208
|
- config/routes.rb
|
195
209
|
- lib/riiif.rb
|
196
|
-
- lib/riiif/abstract_file_system_resolver.rb
|
197
|
-
- lib/riiif/akubra_system_file_resolver.rb
|
198
210
|
- lib/riiif/engine.rb
|
199
|
-
- lib/riiif/file_system_file_resolver.rb
|
200
|
-
- lib/riiif/http_file_resolver.rb
|
201
|
-
- lib/riiif/nil_authorization_service.rb
|
202
211
|
- lib/riiif/rails/routes.rb
|
203
212
|
- lib/riiif/routes.rb
|
204
213
|
- lib/riiif/version.rb
|
@@ -209,12 +218,19 @@ files:
|
|
209
218
|
- spec/models/riiif/http_file_resolver_spec.rb
|
210
219
|
- spec/models/riiif/image_information_spec.rb
|
211
220
|
- spec/models/riiif/image_spec.rb
|
221
|
+
- spec/models/riiif/transformation_spec.rb
|
212
222
|
- spec/routing/redirect_spec.rb
|
213
223
|
- spec/routing/resize_routes_spec.rb
|
214
224
|
- spec/services/riiif/imagemagick_command_factory_spec.rb
|
225
|
+
- spec/services/riiif/kakadu_command_factory_spec.rb
|
226
|
+
- spec/services/riiif/region/absolute_spec.rb
|
227
|
+
- spec/services/riiif/size/absolute_spec.rb
|
228
|
+
- spec/services/riiif/size/height_spec.rb
|
229
|
+
- spec/services/riiif/size/width_spec.rb
|
215
230
|
- spec/spec_helper.rb
|
216
231
|
- spec/test_app_templates/Gemfile.extra
|
217
232
|
- spec/test_app_templates/lib/generators/test_app_generator.rb
|
233
|
+
- spec/transformers/riiif/kakadu_transformer_spec.rb
|
218
234
|
homepage: https://github.com/curationexperts/riiif
|
219
235
|
licenses:
|
220
236
|
- APACHE2
|
@@ -230,12 +246,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
230
246
|
version: '0'
|
231
247
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
232
248
|
requirements:
|
233
|
-
- - "
|
249
|
+
- - ">"
|
234
250
|
- !ruby/object:Gem::Version
|
235
|
-
version:
|
251
|
+
version: 1.3.1
|
236
252
|
requirements: []
|
237
253
|
rubyforge_project:
|
238
|
-
rubygems_version: 2.6.
|
254
|
+
rubygems_version: 2.6.13
|
239
255
|
signing_key:
|
240
256
|
specification_version: 4
|
241
257
|
summary: A rails engine that support IIIF requests
|
@@ -246,9 +262,16 @@ test_files:
|
|
246
262
|
- spec/models/riiif/http_file_resolver_spec.rb
|
247
263
|
- spec/models/riiif/image_information_spec.rb
|
248
264
|
- spec/models/riiif/image_spec.rb
|
265
|
+
- spec/models/riiif/transformation_spec.rb
|
249
266
|
- spec/routing/redirect_spec.rb
|
250
267
|
- spec/routing/resize_routes_spec.rb
|
251
268
|
- spec/services/riiif/imagemagick_command_factory_spec.rb
|
269
|
+
- spec/services/riiif/kakadu_command_factory_spec.rb
|
270
|
+
- spec/services/riiif/region/absolute_spec.rb
|
271
|
+
- spec/services/riiif/size/absolute_spec.rb
|
272
|
+
- spec/services/riiif/size/height_spec.rb
|
273
|
+
- spec/services/riiif/size/width_spec.rb
|
252
274
|
- spec/spec_helper.rb
|
253
275
|
- spec/test_app_templates/Gemfile.extra
|
254
276
|
- spec/test_app_templates/lib/generators/test_app_generator.rb
|
277
|
+
- spec/transformers/riiif/kakadu_transformer_spec.rb
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module Riiif
|
2
|
-
module Region
|
3
|
-
module Imagemagick
|
4
|
-
# decodes requested cooridnates into an imagemagick crop directive
|
5
|
-
class AbsoluteDecoder
|
6
|
-
def initialize(x, y, width, height)
|
7
|
-
@x = x
|
8
|
-
@y = y
|
9
|
-
@width = width
|
10
|
-
@height = height
|
11
|
-
end
|
12
|
-
|
13
|
-
# @return [String] a region for imagemagick to decode
|
14
|
-
# (appropriate for passing to the -crop parameter)
|
15
|
-
def decode
|
16
|
-
"#{@width}x#{@height}+#{@x}+#{@y}"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
module Riiif
|
2
|
-
module Region
|
3
|
-
module Imagemagick
|
4
|
-
# The image or region is not scaled, and is returned at its full size.
|
5
|
-
class FullDecoder
|
6
|
-
# @return [NilClass] a region for imagemagick to decode
|
7
|
-
# the nil implies no cropping needed
|
8
|
-
def decode
|
9
|
-
nil
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Riiif
|
2
|
-
module Region
|
3
|
-
module Imagemagick
|
4
|
-
# decodes requested cooridnates into an imagemagick crop directive
|
5
|
-
class PercentageDecoder
|
6
|
-
def initialize(image_info, x, y, width, height)
|
7
|
-
@image_info = image_info
|
8
|
-
@x = x
|
9
|
-
@y = y
|
10
|
-
@width = width
|
11
|
-
@height = height
|
12
|
-
end
|
13
|
-
|
14
|
-
# Imagemagick can't do percentage offsets, so we have to calculate it
|
15
|
-
# @return [String] a region for imagemagick to decode
|
16
|
-
# (appropriate for passing to the -crop parameter)
|
17
|
-
def decode
|
18
|
-
"#{@width}%x#{@height}+#{offset_x}+#{offset_y}"
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def offset_x
|
24
|
-
(@image_info.width * Integer(@x).to_f / 100).round
|
25
|
-
end
|
26
|
-
|
27
|
-
def offset_y
|
28
|
-
(@image_info.height * Integer(@y).to_f / 100).round
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Riiif
|
2
|
-
module Region
|
3
|
-
module Imagemagick
|
4
|
-
# decodes requested cooridnates into an imagemagick crop directive
|
5
|
-
class SquareDecoder
|
6
|
-
def initialize(image_info)
|
7
|
-
@image_info = image_info
|
8
|
-
end
|
9
|
-
|
10
|
-
# @return [String] a square region for imagemagick to decode
|
11
|
-
# (appropriate for passing to the -crop parameter)
|
12
|
-
def decode
|
13
|
-
min, max = [@image_info.width, @image_info.height].minmax
|
14
|
-
|
15
|
-
offset = (max - min) / 2
|
16
|
-
if @image_info.height >= @image_info.width
|
17
|
-
"#{min}x#{min}+0+#{offset}"
|
18
|
-
else
|
19
|
-
"#{min}x#{min}+#{offset}+0"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module Riiif
|
2
|
-
module Size
|
3
|
-
module Imagemagick
|
4
|
-
# The width and height of the returned image are exactly w and h.
|
5
|
-
# The aspect ratio of the returned image may be different than the extracted
|
6
|
-
# region, resulting in a distorted image.
|
7
|
-
class AbsoluteDecoder
|
8
|
-
def initialize(width, height)
|
9
|
-
@width = width
|
10
|
-
@height = height
|
11
|
-
end
|
12
|
-
|
13
|
-
# @return [String] a resize directive for imagemagick to use
|
14
|
-
def decode
|
15
|
-
"#{@width}x#{@height}!"
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Riiif
|
2
|
-
module Size
|
3
|
-
module Imagemagick
|
4
|
-
# The image content is scaled for the best fit such that the resulting width and
|
5
|
-
# height are less than or equal to the requested width and height.
|
6
|
-
class BestFitDecoder
|
7
|
-
def initialize(width, height)
|
8
|
-
@width = width
|
9
|
-
@height = height
|
10
|
-
end
|
11
|
-
|
12
|
-
# @return [String] a resize directive for imagemagick to use
|
13
|
-
def decode
|
14
|
-
"#{@width}x#{@height}"
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
module Riiif
|
2
|
-
module Size
|
3
|
-
module Imagemagick
|
4
|
-
# decodes requested size into an imagemagick resize directive
|
5
|
-
class FullDecoder
|
6
|
-
# @return [NilClass] a size for imagemagick to decode
|
7
|
-
# the nil implies no resizing needed
|
8
|
-
def decode
|
9
|
-
nil
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Riiif
|
2
|
-
module Size
|
3
|
-
module Imagemagick
|
4
|
-
# The image or region should be scaled so that its height is exactly equal
|
5
|
-
# to the provided parameter, and the width will be a calculated value that
|
6
|
-
# maintains the aspect ratio of the extracted region
|
7
|
-
class HeightDecoder
|
8
|
-
def initialize(height)
|
9
|
-
@height = height
|
10
|
-
end
|
11
|
-
|
12
|
-
# @return [String] a resize directive for imagemagick to use
|
13
|
-
def decode
|
14
|
-
"x#{@height}"
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|