Class: Imogen::Iiif::Size
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Transform
#initialize, #max, #min
Class Method Details
.convert(img, size) ⇒ Object
26
27
28
29
30
31
32
33
|
# File 'lib/imogen/iiif/size.rb', line 26
def self.convert(img, size)
dims = Size.new(img).get(size)
if dims
img.rescale(*dims) {|crop| yield crop}
else
yield img
end
end
|
Instance Method Details
#get(scale = nil) ⇒ Object
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/imogen/iiif/size.rb', line 4
def get(scale=nil)
if scale.nil? or scale.eql? "full"
return nil
end
if md = /^(\d+)?,(\d+)?$/.match(scale)
w = md[1] ? min(Integer(md[1]), @width) : nil
h = md[2] ? min(Integer(md[2]), @height) : nil
raise BadRequest.new("bad scale #{scale}") unless w or h
w ||= (@width * (h.to_f / @height)).round
h ||= (@height * (w.to_f / @width)).round
e = [w,h]
elsif md = /^pct:(\d+(\.\d+)?)/.match(scale)
p = Float(md[1])
p = min(100,p).to_f
raise BadRequest.new("bad size #{scale}") if p <= 0
e = [(@width * p / 100).round, (@height * p / 100).round]
else
raise BadRequest.new("bad size #{scale}")
end
raise BadRequest.new("bad size #{scale}") if e[0] <= 0 or e[1] <= 0
return e
end
|